2013-08-27 6 views
5

私はGoogleUtilAuth.getToken()を使用してトークンを生成しています。私は、2つのクライアントIDにWebページ用とAndroidのアプリケーションのための1つを生成しており、両方が同じプロジェクトにGoogleAuthException不明なソース

verification from back end server

このリンクを.Followedています

08-27 19:19:54.641: W/System.err(9792): com.google.android.gms.auth.GoogleAuthException: Unknown 
08-27 19:19:54.651: W/System.err(9792):  at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) 
08-27 19:19:54.651: W/System.err(9792):  at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) 
08-27 19:19:54.651: W/System.err(9792):  at com.example.tokengenerate.MainActivity$1.doInBackground(MainActivity.java:45) 
08-27 19:19:54.661: W/System.err(9792):  at com.example.tokengenerate.MainActivity$1.doInBackground(MainActivity.java:1) 
08-27 19:19:54.661: W/System.err(9792):  at android.os.AsyncTask$2.call(AsyncTask.java:264) 
08-27 19:19:54.661: W/System.err(9792):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
08-27 19:19:54.661: W/System.err(9792):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
08-27 19:19:54.661: W/System.err(9792):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
08-27 19:19:54.661: W/System.err(9792):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
08-27 19:19:54.661: W/System.err(9792):  at java.lang.Thread.run(Thread.java:864) 
:ここ
package com.example.tokengenerate; 

import java.io.IOException; 

import com.google.android.gms.auth.GoogleAuthException; 
import com.google.android.gms.auth.GoogleAuthUtil; 
import com.google.android.gms.auth.UserRecoverableAuthException; 
import com.google.android.gms.common.Scopes; 

import android.os.AsyncTask; 
import android.os.Bundle; 
import android.accounts.Account; 
import android.accounts.AccountManager; 
import android.app.Activity; 
import android.util.Log; 
import android.view.Menu; 
import android.widget.TextView; 

public class MainActivity extends Activity { 
    TextView tv; 
    String scope="audience:server:client_id:CLIENTID OF WEBPAGE"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     tv =(TextView)findViewById(R.id.printId); 
    new AsyncTask<Void, Void, Void>() { 
     String id=null; 
     @Override 
     protected void onPostExecute(Void result) { 
      // TODO Auto-generated method stub 
      tv.setText(id); 
      super.onPostExecute(result); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      // TODO Auto-generated method stub 

       String[] account=getAccountNames(); 
       for(int i =0;i<account.length;i++) 
       { 
        try { 
        Log.e("account name", account[i]); 
        id=GoogleAuthUtil.getToken(MainActivity.this, account[i], scope); 
         Log.e("google id",id); 
        } catch (UserRecoverableAuthException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (GoogleAuthException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       } 



      return null; 
     } 
    }.execute(null,null,null); 


    } 
    private String[] getAccountNames() { 
     AccountManager mAccountManager = AccountManager.get(this); 
     Account[] accounts = mAccountManager.getAccountsByType(
       GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE); 
     String[] names = new String[accounts.length]; 
     for (int i = 0; i < names.length; i++) { 
      names[i] = accounts[i].name; 
     } 
     return names; 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

は私のLogcatです:

ここに私のコードです

help.Not私はスコープ

String scope = "oauth2:" + Scopes.PROFILE; 

を取得し、ここで

id=GoogleAuthUtil.getToken(MainActivity.this, account[i], scope); 

をこのscpeを使用するには、間違った

+0

Log.e( "account name")の出力を確認できますか?最初の一見では、あなたのコードは妥当に見えます –

+0

@TimBray返信いただきありがとうございます。アカウント名でemial id(例: "[email protected]")を表示していますが、scope = audience: :CLIENTID WEBPAGE.But私はスコープ= https://www.googleapis.com/auth/plusを入れたら私はトークンを得た。 –

+1

'oauth2:'接頭辞をスコープに追加してみてください。 –

答えて

0

使用このコードをつもりどこ次に、あなたがあなたのアクセスを得ることができます取得してください完全に立ち往生変数 "id"を思い出す。簡単な方法。

関連する問題