2014-12-13 183 views
1

我已經成功地插入了此程序的一個片刻之前,並試圖找出API是否當前損壞或我犯了一個錯誤。google + api moments.insert 401未經授權使用python請求

我已獲得與request_visible_actions一個有效的access_token = http://schema.org/AddAction如從AUTH階段下方的部分URL看出以及plus.login範圍:

https://accounts.google.com/o/oauth2/auth?access_type=offline&request_visible_actions=http%3A%2F%2Fschema.org%2FAddAction& 

請求代碼:

import requests 
import json 
moment = {"type":"http://schema.org/AddAction", 
      "object": {"id": "object-id-1", 
        "type":"http://schema.org/AddAction", 
        "name": "The Google+ Platform", 
        "description": "A page that describes just how awesome Google+ is!", 
        "image": "https://developers.google.com/+/plugins/snippet/examples/thing.png"}} 

url ='https://www.googleapis.com/plus/v1/people/me/moments/vault' 
params = {'access_token': 'MY_VALID_ACCESS_TOKEN'} 
r = requests.request("POST",url=url, params=params, json=moment, headers=headers) 
print r.url 
print r.json() 

和結果:

https://www.googleapis.com/plus/v1/people/me/moments/vault?access_token=MY_ACCESS_TOKEN 
{u'error': {u'code': 401, 
      u'message': 
      u'Unauthorized', 
      u'errors': [{u'domain': u'global', u'message': u'Unauthorized', u'reason': u'unauthorized'}]}} 

我試圖驗證智慧h request_visible_actions存在的tokeninfo端點,但沒有在那裏列出。

證實授予範圍:

'https://www.googleapis.com/auth/userinfo.profile', 
'https://www.googleapis.com/auth/userinfo.email', 
'https://www.googleapis.com/auth/plus.login', 
'https://www.googleapis.com/auth/plus.profile.emails.read', 
'https://www.googleapis.com/auth/plus.moments.write', 
'https://www.googleapis.com/auth/plus.me', 
'https://www.googleapis.com/auth/plus.profile.agerange.read', 
'https://www.googleapis.com/auth/plus.profile.language.read', 
'https://www.googleapis.com/auth/plus.circles.members.read' 

我能夠得到的時刻/金庫用同樣的道理,所以我知道它是有效的。

這裏的任何想法?

+0

提示:請求2.4.2和最多支持'json'關鍵字參數;在這種情況下,您可以*忽略* headers和'json.dumps()'調用; 'r = requests.post(url,json = moment)' – 2014-12-13 08:46:40

+0

不錯的提示,我會試試看。 – arctelix 2014-12-13 08:46:48

+0

讓我們暫時假定'MY_VALID_ACCESS_TOKEN'不是URL安全的。你可以嘗試'params = {'access_token':MY_VALID_ACCESS_TOKEN}'而不是手動將其添加到URL?當然,也可以在URL末尾去掉'?'。 – 2014-12-13 08:48:46

回答

0

只要在用戶首次連接到您的應用程序幷包含您要發佈的應用程序活動類型時包含request_visible_actions=space separated list of app activity types,問題中顯示的過程實際上就會起作用。如果您想要在初次驗證後更新列表或添加moment.insert權限,用戶必須先將應用從其Google + settings斷開並重新連接。

看來這是谷歌執行request_visible_actions和增量授權策略時的一個錯誤。

request_visible_actions似乎只在初始授權期間被接受,並在此之後被忽略。這使得不可能逐步增加這個參數。

此外,request_visible_actions在調用tokeninfo端點時不可用,這使我相信request_visible_actions以某種方式與token auth分離,而僅僅是在實例化時分配給用戶應用程序連接的屬性。

Posted to exising moments.instert 401 issue

相關問題