带有Google+ API的Android应用:客户ID或Android ID?

问题描述 投票:1回答:2

我正在尝试开发一个使用一些基本的Google+ Apis的应用程序。该应用程序从Google请求令牌,然后在我的服务器和我的服务器上传,以检查其与Google的验证。我不明白(我有点困惑)是Web开发人员控制台中Web应用程序的客户端ID和Android应用程序的客户端ID之间的区别。我在Android应用程序上尝试了这两种方法并且都工作(成功获得了一个令牌)。显然,使用Web客户端ID时,我使用GoogleAuthUtil.getToken()传递的SCOPE与使用Android客户端ID的SCOPE不同。那么,它们之间的区别是什么?我认为我应该选择Android客户端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
2个回答
0
投票

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

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

我希望这可以帮助你。


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.