我已将旧的Google Plus(又名Google Play服务)API集成到我的应用程序中,现在我正在尝试更新使用V2 API的东西,其中包括访问人员列表中的人员列表界。为什么PlusClient.loadPeople出现HTTP 403错误?
从表面上看,只有我不得不做出改变来更新我使用验证的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
这peachily工作了userinfo
并继续为userinfo
与V2代码工作。但是,如果我尝试通过REST API手动获取用户可见的人,用类似下面的要求:
https://www.googleapis.com/plus/v1/people/me/people/visible?auth_token=XXX
我得到一个403响应,其具有以下JSON斑点:
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "accessNotConfigured",
"message": "Access Not Configured"
}
],
"code": 403,
"message": "Access Not Configured"
}
}
从我可以通过文档搜集到的内容,不需要获取和配置Google API密钥,以便通过Google Play Services代码将Google Plus集成到Android应用中。事实上,API没有提供这样一把钥匙,这证实了这种怀疑。
我恰好有一个Google API密钥连接到我的Android应用程序GCM。由于这个API密钥在某种程度上被混淆了,我已经确保为该API密钥启用了Google+,但这并没有让403响应神奇地消失。
我已经通过嵌入在REST API docs for Google+中的API浏览器测试了https://www.googleapis.com/plus/v1/people/me/people/visible
请求,它在那里工作。我可以在JSON结果中看到圈子中的人员。
我注意到,这些要求似乎有掴到URL的API密钥:
https://www.googleapis.com/plus/v1/people/me/people/visible?key=AIzaSyCFj15TpkchL4OUhLD1Q2zgxQnMb7v3XaM
所以,我想创造我的Android应用程序(API密钥的使用,我使用相同的谷歌API项目对于GCM),并将其添加到手动尝试加载好友列表的代码中的URL中。该请求因401错误而失败,说明授权信息不正确。我假设我从Google Plus SDK代码中获取的身份验证令牌以某种方式通过不同的“API项目”获得(如可能是Android Google Plus应用使用的项目),并且当我传递自己的密钥时, 。
我到目前为止还没有去尝试消除所有对Google Play服务Google+ SDK的使用,而只是自己获取OAuth访问令牌。我只是希望这会起作用,我不必浪费太多时间来调查它。因此,也许宇宙中的某个人或者已经获得了Google+信息,或者可以指出我的方向。
您请求的范围是什么?有一个新的作用域,plus.login,它是userinfo作用域的超集。 – class 2013-03-05 00:44:01
是的,这就是我正在使用的范围。 – samskivert 2013-03-05 03:43:25
您可能想要试用Android快速入门以确保您的环境已设置并且您拥有最新版本的Google Play服务:https://developers.google.com/+/quickstart/android – class 2013-03-05 18:06:03