【发布时间】: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