我将旧的 Google Plus(又名 Google Play 服务)API 集成到我的应用程序中,现在我正在尝试更新内容以使用 V2 API,其中包括访问某人圈子中的人员列表等。
从表面上看,我应该做的唯一更改是更新我用来进行身份验证的 OAuth 配置文件:
_plusClient = new PlusClient.Builder(_activity, this, this).
setScopes(Scopes.PLUS_LOGIN).build();
然后(在进行必要的环跳以确保事物连接之后),向用户的朋友发出请求:
_plusClient.loadPeople(new PlusClient.OnPeopleLoadedListener() {
public void onPeopleLoaded (ConnectionResult status, PersonBuffer people,
String nextPageToken) {
// ...
}
}, com.google.android.gms.plus.model.people.Person.Collection.VISIBLE);
然而,这导致ConnectionResult.NETWORK_ERROR
被报告。我可以在 Android 日志中看到以下内容:
E/Volley (13590): [4053] BasicNetwork.performRequest: Unexpected response code 403 for https://www.googleapis.com/plus/v1/people/me/people/visible?maxResults=100&orderBy=alphabetical
我的旧代码在使用 PlusClient 获取 OAuth 自动令牌(通过GoogleAuthUtil.getToken
)后手动发出 REST 请求。因此,为了获取用户的基本个人资料信息,我最终发出了一个 HTTP 请求,如下所示:
https://www.googleapis.com/oauth2/v1/userinfo?auth_token=XXX
这对 V2 代码非常有效,userinfo
并且继续适用于userinfo
V2 代码。但是,如果我尝试通过 REST API 手动获取用户的可见人员,请求如下:
https://www.googleapis.com/plus/v1/people/me/people/visible?auth_token=XXX
我收到带有以下 JSON blob 的 403 响应:
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "accessNotConfigured",
"message": "Access Not Configured"
}
],
"code": 403,
"message": "Access Not Configured"
}
}
从我可以通过文档收集到的信息来看,无需获取和配置 Google API 密钥即可通过 Google Play 服务代码将 Google Plus 集成到 Android 应用程序中。实际上,API 中没有提供这样一个密钥的地方,这证实了这种怀疑。
我碰巧有一个 Google API 密钥连接到我的 GCM 的 Android 应用程序。万一该 API 密钥以某种方式在所有这一切中混在一起,我已确保为该 API 密钥启用了 Google+,但这并没有使 403 响应神奇地消失。
我已经https://www.googleapis.com/plus/v1/people/me/people/visible
通过嵌入在Google+ 的 REST API 文档中的 API 资源管理器测试了一个请求,它在那里工作。我可以在 JSON 结果中看到我圈子中的人。
我注意到这些请求似乎在 URL 上添加了一个 API 密钥:
https://www.googleapis.com/plus/v1/people/me/people/visible?key=AIzaSyCFj15TpkchL4OUhLD1Q2zgxQnMb7v3XaM
因此,我尝试为我的 Android 应用程序创建一个 API 密钥(使用与 GCM 相同的 Google API 项目),并将其附加到手动尝试加载好友列表的代码中的 URL 上。此请求失败并出现 401 错误,说明授权信息错误。我假设我从 Google Plus SDK 代码返回的身份验证令牌是通过不同的“API 项目”(可能是 Android Google Plus 应用程序使用的那个)获得的,当我传递我自己的密钥时,事情变得很不稳定.
到目前为止,我还没有尝试消除对 Google Play Services Google+ SDK 的所有使用,而只是自己获得了一个 OAuth 访问令牌。我宁愿希望这能奏效,而且我不必浪费太多时间来调查它。所以也许宇宙中的某个人要么让这些 Google+ 的东西正常工作,要么可以为我指明一个有用的方向。