我正在尝试使用silent signin api的用户登录。
用户首次使用Auth.GoogleSignInApi.getSignInResultFromIntent(data);
在用户中打开应用程序,然后提示用户选择登录电子邮件。
下次需要续订令牌时,我会尝试使用Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
代码如下:
public void createNewToken(String serverKey,Context context){ this.context = context;
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(serverKey)
.requestEmail()
.requestProfile()
.build();
GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(context)
.addOnConnectionFailedListener(this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.addScope(new Scope(Scopes.PROFILE))
.addScope(new Scope(Scopes.EMAIL))
.build();
OptionalPendingResult<GoogleSignInResult> pendingResult = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
if (pendingResult.isDone()) {
handleResult(pendingResult.get());
} else {
pendingResult.setResultCallback(new ResultCallback<GoogleSignInResult>() {
@Override
public void onResult(@NonNull GoogleSignInResult result) {
handleResult(result);
}
});
}
}
然而,问题是我从isDone或回调()中得不到任何回调。除此之外没有给出任何错误:
D / GoogleSignInApiImpl:getSavedSignInResultIfEligible D / GoogleSignInApiImpl:trySilentSignIn
我错误地滥用api或者为什么要这样做? thx任何反馈!
答案 0 :(得分:2)
尝试添加&#34; .enableAutoManage(...)&#34;在构建Google API客户端时:developers.google.com/identity/sign-in/android
答案 1 :(得分:1)
如果您不想使用enableAutoManage,因为您不在FragmentActivity中,您可以手动调用googleApiClient.connect()并断开连接。