2013-08-27 3 views
5
내가 GoogleUtilAuth.getToken()를 사용하여 토큰을 생성하고

소스 두 개의 클라이언트 ID 웹 페이지 용 및 안드로이드 응용 프로그램에 대한 하나 둘 .Followed 같은 프로젝트 링크GoogleAuthException 알 수없는. 나는 또한 생성 한

verification from back end server

에게에

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; 
    } 

} 

내 로그 캣입니다 :

여기 내 코드입니다

내가 범위를

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

을 얻을 당신이 액세스 할 수 있습니다 그리고 여기 scpe

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

를 사용하여 사용을 잘못

+0

Log.e ("account name")의 출력을 볼 수 있습니까? 언뜻보기에 코드는 합리적으로 보입니다. –

+0

@TimBray 답장을 보내 주셔서 감사합니다. 계정 이름에 emial id (예 : "[email protected]")가 표시되어 있습니다. scope = audience : server : client_id를 입력 할 때만이 오류가 표시됩니다. : WEBPAGE의 CLIENTID. 그러나 범위 = https://www.googleapis.com/auth/plus를 입력하면 토큰을 얻습니다. –

+1

범위에'oauth2 :'접두사를 추가해보십시오. –

답변

0

이 코드를 하겠어 어디 help.Not가 점점하시기 바랍니다 완전히 붙어 변수 "id"를 보자. 간단한 방법.