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

为什么requestIdToken返回null?

如何解决《为什么requestIdToken返回null?》经验,为你挑选了2个好方法。

我按照以下步骤进行了此链接

    我将google-services.json下载到我的app文件夹中.

    我的项目级gradle文件:

    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        classpath 'com.google.gms:google-services:1.5.0-beta2'
    }
    

    我的应用级gradle文件:

    apply plugin: 'com.android.application'
    apply plugin: 'com.google.gms.google-services'
    
    dependencies {
        compile fileTree(include: ['*.jar'], dir: 'libs')
        compile 'com.google.android.gms:play-services-identity:8.3.0'
        compile 'com.google.android.gms:play-services:8.3.0'
        compile 'com.google.android.gms:play-services-plus:8.3.0'
        compile 'com.google.android.gms:play-services-auth:8.3.0'
        ...
    }
    

    我为后端服务器创建了OAuth 2.0客户端ID,并将此客户端ID传递给strings.xml文件.

    最后我创建了GoogleSignInOptions和GoogleApiClient对象,如下所示:

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .requestIdToken(getString(R.string.server_client_id))
            .build();
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();
    

    但问题是result.isSuccess()总是在handleSignInResult函数中返回false.我想也许我在第1步或第2步错误地做某事.我的代码几乎与此SignInActivity.java类似.任何帮助,将不胜感激.

BNK.. 40

正如我在以下问题中所回答的那样:

Google登录requestIdToken返回null

为了成功请求Id令牌,您应该使用"Web应用程序"类型的客户端ID,而不是"Android"类型的客户端ID.

您还可以在Google的文档中找到以下信息(请注意#3):

为后端服务器创建OAuth 2.0客户端ID

如果您的应用使用后端服务器进行身份验证或从后端服务器访问Google API,则必须为服务器创建OAuth 2.0客户端ID.要创建OAuth 2.0客户端ID:

    打开"凭据"页面.

    单击添加凭据> OAuth 2.0客户端ID.

    选择Web应用程序.

    单击"创建"

在创建GoogleSignInOptions对象时,将此客户端ID传递给requestIdTokenrequestServerAuthCode方法.


3月26日更新:

Android开发人员博客 - 为Google登录注册OAuth客户端


yubaraj poud.. 19

在我的情况下,我以前,

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

我通过添加添加requestToken方法来修复它,

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

现在它为我工作.希望这可以帮助有人像我这样的问题.



1> BNK..:

正如我在以下问题中所回答的那样:

Google登录requestIdToken返回null

为了成功请求Id令牌,您应该使用"Web应用程序"类型的客户端ID,而不是"Android"类型的客户端ID.

您还可以在Google的文档中找到以下信息(请注意#3):

为后端服务器创建OAuth 2.0客户端ID

如果您的应用使用后端服务器进行身份验证或从后端服务器访问Google API,则必须为服务器创建OAuth 2.0客户端ID.要创建OAuth 2.0客户端ID:

    打开"凭据"页面.

    单击添加凭据> OAuth 2.0客户端ID.

    选择Web应用程序.

    单击"创建"

在创建GoogleSignInOptions对象时,将此客户端ID传递给requestIdTokenrequestServerAuthCode方法.


3月26日更新:

Android开发人员博客 - 为Google登录注册OAuth客户端



2> yubaraj poud..:

在我的情况下,我以前,

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

我通过添加添加requestToken方法来修复它,

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

现在它为我工作.希望这可以帮助有人像我这样的问题.

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