运行Google登录异步类时,标记值为null,表示fetchToken返回空值。范围url中fetchToken()中的问题。在显示异步类代码下, logcat中的错误& 清单权限: -
<SplitView x:Name="ShellSplitView"
DisplayMode="Overlay"
IsPaneOpen="False"
OpenPaneLength="300">
<SplitView.Pane>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<RadioButton x:Name="SettingsButton"
Grid.Row="1"
Content="Settings"
Checked="OnSettingsButtonChecked" />
</Grid>
</SplitView.Pane>
<SplitView.Content>...</SplitView.Content>
</SplitView>
logcat出错: -
public class GetUsernameTask extends AsyncTask {
Activity mActivity;
String mScope;
String mEmail;
GetUsernameTask(Activity activity, String name, String scope) {
this.mActivity = activity;
this.mScope = scope;
this.mEmail = name;
}
@Override
protected Object doInBackground(Object[] objects) {
try {
String token = fetchToken();
if (token != null) {
// Insert the good stuff here.
// Use the token to access the user's Google data.
//...
Log.d(LoginActivity.class.getName(), "doInBackground token -> " + token);
googleToken = token;
// showLoadingDialog(getString(R.string.login), getString(R.string.please_wait));
loginWithGoogle();
}else {
Log.d(LoginActivity.class.getName(), "doInBackground token null -> " );
}
} catch (IOException e) {
System.out.println("------inCatch");
// The fetchToken() method handles Google-specific exceptions,
// so this indicates something went wrong at a higher level.
// TIP: Check for network connectivity before starting the AsyncTask.
//...
}
return null;
}
/**
* Gets an authentication token from Google and handles any
* GoogleAuthException that may occur.
*/
protected String fetchToken() throws IOException {
try {
Bundle bundle = new Bundle();
bundle.putString(GoogleAuthUtil.KEY_REQUEST_ACTIONS,
"http://schemas.google.com/AddActivity http://schemas.google.com/BuyActivity");
String scope="oauth2:server:client_id:629234825029-1cs4vursdfs06q2ir92anucn4r04c9jfc.apps.googleusercontent.com:api_scope:https://www.googleapis.com/auth/plus.login";
System.out.println("mActivity------"+mActivity);
System.out.println("mEmail----"+mEmail);
return GoogleAuthUtil.getToken(mActivity, mEmail, scope);
} catch (UserRecoverableAuthException userRecoverableException) {
userRecoverableException.printStackTrace();
// GooglePlayServices.apk is either old, disabled, or not present
// so we need to show the user some UI in the activity to recover.
Log.d(LoginActivity.class.getName(), "error in fetch" );
//mActivity.handleException(userRecoverableException);
}
catch (GoogleAuthException fatalException) {
fatalException.printStackTrace();
// Some other type of unrecoverable exception has occurred.
// Report and log the error as appropriate for your app.
// ...
Log.d(LoginActivity.class.getName(), "error in fetch 2" );
}
catch (Exception e)
{
System.out.println("----" + e);
}
return null;
}
}
清单:
09-17 14:25:13.206 8994-9152/com.gns.socialtongits.pro.android W/System.err﹕ com.google.android.gms.auth.UserRecoverableAuthException: NeedPermission
09-17 14:25:13.206 8994-9152/com.gns.socialtongits.pro.android W/System.err﹕ at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
09-17 14:25:13.206 8994-9152/com.gns.socialtongits.pro.android W/System.err﹕ at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
09-17 14:25:13.206 8994-9152/com.gns.socialtongits.pro.android W/System.err﹕ at com.gns.socialtongits.android.LoginOptionsActivity$GetUsernameTask.fetchToken(LoginOptionsActivity.java:717)
09-17 14:25:13.206 8994-9152/com.gns.socialtongits.pro.android W/System.err﹕ at com.gns.socialtongits.android.LoginOptionsActivity$GetUsernameTask.doInBackground(LoginOptionsActivity.java:664)
09-17 14:25:13.206 8994-9152/com.gns.socialtongits.pro.android W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
09-17 14:25:13.206 8994-9152/com.gns.socialtongits.pro.android W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
09-17 14:25:13.213 8994-9152/com.gns.socialtongits.pro.android W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
09-17 14:25:13.213 8994-9152/com.gns.socialtongits.pro.android W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
09-17 14:25:13.213 8994-9152/com.gns.socialtongits.pro.android W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
09-17 14:25:13.213 8994-9152/com.gns.socialtongits.pro.android W/System.err﹕ at java.lang.Thread.run(Thread.java:841)
09-17 14:25:13.213 8994-9095/com.gns.socialtongits.pro.android I/Socket﹕ To Write: CN=3&CSID=1442480098448
09-17 14:25:13.213 8994-9152/com.gns.socialtongits.pro.android D/com.gns.socialtongits.android.LoginActivity﹕ error in fetch
09-17 14:25:13.213 8994-9152/com.gns.socialtongits.pro.android D/com.gns.socialtongits.android.LoginActivity﹕ doInBackground token null ->
提前致谢
答案 0 :(得分:0)
您需要做的就是:
catch (UserRecoverableAuthException e) {
startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION);
}
REQUEST_AUTHORIZATION可以是您想要的任何数字 - 它仅用于在onActivityResult中识别此请求...