我有一個啓動Facebook OAuth process Django模板做:無法使用Facebook進行OAuth;我的下一個調試步驟是什麼?
window.location='https://www.facebook.com/dialog/oauth?client_id=MY_CLIENT_ID&redirect_uri=http%3A//localhost%3A8000/fbpanel/explore-python'
然後,在我的Django的看法,我得到的結果代碼如下:
import cgi
import urllib
# [...]
code = request.GET['code']
args = {
'client_id': MY_CLIENT_ID,
'redirect_uri': 'http://localhost:8000/fbpanel/explore_python'
'client_secret': MY_CLIENT_SECRET,
'code': code,
}
url = 'https://graph.facebook.com/oauth/access_token?' + \
urllib.urlencode(args)
raw_response = urllib.urlopen(url).read()
response = cgi.parse_qs(raw_response)
if response:
error = ''
if response['access_token']:
access_token = response['access_token'][0]
if response['expires']:
expires = response['expires'][0]
else:
access_token = 'No access token returned'
expires = 'No expiration given'
error = raw_response
不變的是,response
是None
和raw_response
包含Error: {"error":{"message":"Error validating verification code.","type":"OAuthException"}}
與JavaScript SDK相同的憑據驗證正常。我在這種情況下綁定了我的服務器到localhost
,並在我的官方應用域中設置了localhost:8000
。在我這樣做之前,JavaScript不會工作。之後,它做到了。所以我不認爲localhost
是問題。
我手動通過代碼加強,打印由FB返回了code
, 然後手動運行由Python解釋器線上面的代碼行, 我什麼都看不到我做錯了。我的下一個調試步驟是什麼?如果您收到OAuthException
,FB 文檔不提供指導。
我看不出你的代碼有什麼問題,雖然我對python不太好。我也懷疑本地主機是問題所在,因爲我期望在這種情況下錯誤消息提及redirect_uri(如果您打算將redirect_uri參數用作測試,它應該這樣做)。您是否嘗試過打印出「url」的值並手動將其輸入到瀏覽器地址欄中? –
我剛剛注意到......你在另一個地方有'explore-python'(連字符),另一個'explore_python'(有一個下劃線)......是在實際的代碼中嗎? –
就是這樣,@FloydWilburn。如果您的redirect_uri在標記請求和代碼請求中不完全匹配,FB將無法驗證您的身份。如果您將您的建議轉到答案,我會接受它。 – ObscureRobot