谷歌SilentSignin api没有回调

时间:2016-01-25 08:15:33

标签: google-signin

我正在尝试使用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任何反馈!

2 个答案:

答案 0 :(得分:2)

尝试添加&#34; .enableAutoManage(...)&#34;在构建Google API客户端时:developers.google.com/identity/sign-in/android

答案 1 :(得分:1)

如果您不想使用enableAutoManage,因为您不在FragmentActivity中,您可以手动调用googleApiClient.connect()并断开连接。