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);
를 사용하여 사용을 잘못
Log.e ("account name")의 출력을 볼 수 있습니까? 언뜻보기에 코드는 합리적으로 보입니다. –
@TimBray 답장을 보내 주셔서 감사합니다. 계정 이름에 emial id (예 : "[email protected]")가 표시되어 있습니다. scope = audience : server : client_id를 입력 할 때만이 오류가 표시됩니다. : WEBPAGE의 CLIENTID. 그러나 범위 = https://www.googleapis.com/auth/plus를 입력하면 토큰을 얻습니다. –
범위에'oauth2 :'접두사를 추가해보십시오. –