gpt4 book ai didi

android - 为什么 PlusClient.loadPeople 会因 HTTP 403 错误而失败?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:25 25 4
gpt4 key购买 nike

我的应用程序中集成了旧的 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 自动 token (通过 GoogleAuthUtil.getToken)后手动发出 REST 请求。因此,为了获取用户的基本个人资料信息,我最终发出了如下 HTTP 请求:

https://www.googleapis.com/oauth2/v1/userinfo?auth_token=XXX

这对 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 key 即可通过 Google Play 服务代码将 Google Plus 集成到 Android 应用程序中。实际上,API 中没有任何地方可以提供这样的 key ,这证实了这种怀疑。

我碰巧有一个谷歌 API key 连接到我的 GCM Android 应用程序。如果 API key 以某种方式混入所有这些,我已确保为该 API key 启用了 Google+,但这并没有使 403 响应神奇地消失。

我已经通过 REST API docs for Google+ 中嵌入的 API 浏览器测试了一个 https://www.googleapis.com/plus/v1/people/me/people/visible 请求它在那里工作。我可以在 JSON 结果中看到我圈子中的人。

我注意到这些请求似乎在 URL 上添加了一个 API key :

https://www.googleapis.com/plus/v1/people/me/people/visible?key=AIzaSyCFj15TpkchL4OUhLD1Q2zgxQnMb7v3XaM

因此,我尝试为我的 Android 应用程序创建一个 API key (使用我用于 GCM 的同一 Google API 项目),并将其添加到手动尝试加载好友列表的代码中的 URL。此请求失败,出现 401 错误,指出授权信息错误。我假设我从 Google Plus SDK 代码返回的授权 token 是以某种方式通过不同的“API 项目”获得的(比如 Android Google Plus 应用程序使用的项目),当我传递自己的 key 时,一切都变得不稳定.

到目前为止,我还没有尝试消除对 Google Play 服务 Google+ SDK 的所有使用,而只是自己获取 OAuth 访问 token 。我宁愿希望这能奏效,而且我不必浪费太多时间来调查它。因此,也许宇宙中有人已经让这些 Google+ 东西正常工作,或者可以为我指明有用的方向。

最佳答案

您是否在 Google API 控制台中注册了经过数字签名的 .apk 文件的公共(public)证书?如果没有,您可以找到有关如何操作的说明 here .

关于android - 为什么 PlusClient.loadPeople 会因 HTTP 403 错误而失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15212725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com