我已將舊的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