Pon*_*ing 19 android deadlock access-token google-plus
在我的Android应用程序中,我试图从GoogleAuthUtil获取AccessToken,如下所示:
accessToken = GoogleAuthUtil.getToken(this,mPlusClient.getAccountName(),"oauth2:"+ SCOPES);
但在这一行我得到的错误如下:
E/GoogleAuthUtil(4696):调用此从你的主线程可以导致死锁和/或ANR的E/GoogleAuthUtil(4696):java.lang.IllegalStateException:调用该从你的主线程可以导致死锁E/GoogleAuthUtil(4696) :在com.google.android.gms.auth.GoogleAuthUtil.b(未知来源)E/GoogleAuthUtil(4696):在com.google.android.gms.auth.GoogleAuthUtil.getToken(未知来源)E/GoogleAuthUtil(4696) :at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
任何这个问题的解决方案?任何帮助将不胜感激.
Lee*_*Lee 42
尝试使用AsyncTask,如下所示:
AsyncTask<Void, Void, String> task = new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) {
String token = null;
try {
token = GoogleAuthUtil.getToken(
MainActivity.this,
mGoogleApiClient.getAccountName(),
"oauth2:" + SCOPES);
} catch (IOException transientEx) {
// Network or server error, try later
Log.e(TAG, transientEx.toString());
} catch (UserRecoverableAuthException e) {
// Recover (with e.getIntent())
Log.e(TAG, e.toString());
Intent recover = e.getIntent();
startActivityForResult(recover, REQUEST_CODE_TOKEN_AUTH);
} catch (GoogleAuthException authEx) {
// The call is not ever expected to succeed
// assuming you have already verified that
// Google Play services is installed.
Log.e(TAG, authEx.toString());
}
return token;
}
@Override
protected void onPostExecute(String token) {
Log.i(TAG, "Access token retrieved:" + token);
}
};
task.execute();
Run Code Online (Sandbox Code Playgroud)
SCOPES是一个以空格分隔的OAuth 2.0范围字符串列表.例如SCOPES,可以定义为:
public static final String SCOPES = "https://www.googleapis.com/auth/plus.login "
+ "https://www.googleapis.com/auth/drive.file";
Run Code Online (Sandbox Code Playgroud)
这些代表您的应用向用户请求的权限.此示例中请求的范围记录在此处:
| 归档时间: |
|
| 查看次数: |
21801 次 |
| 最近记录: |