当前位置:  开发笔记 > 编程语言 > 正文

Token null登录Google帐户

如何解决《Tokennull登录Google帐户》经验,为你挑选了1个好方法。

我按照谷歌的例子来获取令牌但没有成功.总是无法获得令牌.这是Google在您的网页上显示的最新方式开发人员我认为该错误不在我的代码中

  private String CLIENTE_ID = "...apps.googleusercontent.com";



GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(CLIENTE_ID)
            .requestEmail()
            .build();

// Build GoogleAPIClient with the Google Sign-In API and the above options.
mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();

imgBGoogle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

            Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
            startActivityForResult(signInIntent, 9002);
        }
});



@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
        if (requestCode == 9002) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

            handleSignInResult(result, data);

        }

if (requestCode == 9002) {
            // [START get_id_token]
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            Log.d(TAG, "onActivityResult:GET_TOKEN:success:" + result.getStatus().isSuccess());

            if (result.isSuccess()) {
                GoogleSignInAccount acct = result.getSignInAccount();
                String idToken = acct.getIdToken();

                // Show signed-in UI.
                Log.d(TAG, "idToken:" + idToken);
                Log.d(TAG, "\n ");

                // TODO(user): send token to server and validate server-side
            } else {
                // Show signed-out UI.
                Log.d(TAG, "idToken: fail");

            }
            // [END get_id_token]
        }



}

private void handleSignInResult(GoogleSignInResult result, Intent data) {

        getToken1(data);
        getToken2(result);

        String BOOKS_API_SCOPE = "https://www.googleapis.com/auth/books";
        String GPLUS_SCOPE = "https://www.googleapis.com/auth/plus.login";
        String mScopes = "oauth2:" + BOOKS_API_SCOPE + " " + GPLUS_SCOPE;

}


void getToken1(Intent data){

    GoogleSignInResult a = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

    if (a.isSuccess()) {

        Log.d(TAG, "TOKEN 1: " + a.getSignInAccount().getIdToken());
        Log.d(TAG, "DISPLAY NAME 1: " +a.getSignInAccount().getDisplayName());
        Log.d(TAG, "ID 1: " + a.getSignInAccount().getId()+"\n ");

    }else{
        Log.d(TAG, "ID 1: falhou"+"\n ");
    }

}

void getToken2(GoogleSignInResult result){

        if (result.isSuccess()) {

            GoogleSignInAccount acct = result.getSignInAccount();

            Log.d(TAG, "TOKEN 2: " + acct.getIdToken());
            Log.d(TAG, "DISPLAY NAME 2: " + acct.getDisplayName());
            Log.d(TAG, "ID 2: " + acct.getId()+"\n ");

        }else{
            Log.d(TAG, "ID 2: falhou"+"\n ");
        }

}

我该如何获得令牌?谁能帮我?

在此输入图像描述

在此输入图像描述

在此输入图像描述

在此输入图像描述



1> 小智..:

我只是偶然发现了类似的问题,我没有使用网络OAuth客户端,它使用了firebase,我认为这个更简单的解决方案可能对某人有所帮助.

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.default_web_client_id))
                .requestEmail()
                .build();

无需定义default_web_client_id,它将作为粘贴工作.它是由google-services插件生成的字符串.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有