【问题标题】:Android app with Google+ API: Client ID or Android ID?带有 Google+ API 的 Android 应用:客户端 ID 还是 Android ID?
【发布时间】:2014-03-18 15:34:10
【问题描述】:

我正在尝试开发一个使用一些基本 Google+ API 的应用程序。该应用程序向 Google 请求一个令牌,然后将其上传到我的服务器上,我的服务器会检查它是否通过 Google 验证。我不明白(我有点困惑)是 Google Developers Console 中 Web 应用程序的客户端 ID 和 Android 应用程序的客户端 ID 之间的区别。我已经在 Android 应用程序上尝试了它们,并且都可以工作(成功获得令牌)。显然,当使用 Web 客户端 ID 时,我使用 GoogleAuthUtil.getToken() 传递的范围与使用 Android 客户端 ID 的范围不同。那么,它们之间有什么区别呢?我认为我应该选择 Android Client ID,但我想知道真正的区别。

在客户端我使用:

final String token = GoogleAuthUtil.getToken(mContext, userEmail, G_PLUS_SCOPE);

在哪里G_PLUS_SCOPE = oauth2:https://www.googleapis.com/auth/plus.me

在服务器端,我使用以下代码与 Google 核对:

GoogleIdToken token = GoogleIdToken.parse(mJFactory, getRequest().getAuthToken());

        if (mVerifier.verify(token)) {
            GoogleIdToken.Payload tempPayload = token.getPayload();
            if (!tempPayload.getAudience().equals(mAudience)) {
                problem = "Audience mismatch";
                errorMessage = new ErrorMessage(ErrorCodes.AUDIENCE_MISMATCH,problem,null);
                mResponse = new ErrorResponse( errorMessage);
            }
            else if (!mClientIDs.contains(tempPayload.getAuthorizedParty())) {
                problem = "Client ID mismatch";
                errorMessage = new ErrorMessage(ErrorCodes.CLIENT_ID_MISMATCH,problem,null);
                mResponse = new ErrorResponse(errorMessage);
            }

我也不明白 mAudience 的确切价值是什么。我需要将客户端 ID 设置为 mAudience 吗?并且,mClientIDs 是包含所有键(包括 Android 客户端 ID 键)的数组吗?

感谢您的帮助

编辑:在http://android-developers.blogspot.it/2013/01/verifying-back-end-calls-from-android.html 之后,我读到 Audience 是 Web 应用程序的客户端 ID,mIds 是已安装应用程序的所有 ID(对我来说是 1,因为我只有 Android)。但我不确定这是否适用于每种情况。

【问题讨论】:

    标签: android google-plus


    【解决方案1】:

    我没有你的问题的答案,但我发现这个博客可以帮助你:

    http://www.androidhive.info/2014/02/android-login-with-google-plus-account-1/

    希望对你有帮助。

    【讨论】:

    • 在这种情况下,他们使用 Google Plus 客户端,但我不需要它,因为我必须检索令牌。
    【解决方案2】:

    从技术上讲,受众是 ID 令牌旨在对用户进行身份验证的客户端 ID,其中授权方是向其颁发 ID 令牌的客户端 ID:

    http://openid.net/specs/openid-connect-core-1_0.html#IDToken

    当两者都提供时,您应该验证两者。从您的 Android 应用程序请求 ID 令牌时,您应该使用服务器的客户端 ID 来发出请求。然后,您的服务器应在从您的 Android 客户端接收令牌时验证它是否是令牌的受众。

    【讨论】:

    • 我已经编辑了我的问题。我在 OAuth2 的 Google Cloud Console 上的情况是:1 个密钥用于计算引擎,1 个密钥用于客户端 ID Web 应用程序,1 个密钥用于客户端 ID Android 应用程序。那么我的观众是 Android ID 吗?如果有,mClientID 里面有什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    相关资源
    最近更新 更多