2011-09-24 88 views
4

我正在學習構建fb應用程序,並且在第一次嘗試時,我得到了這個奇怪的OAuthException。本教程明確提到我需要傳遞redirect_uri,client_secret,client_id和代碼(來自app auth階段)。但是,當流完成的,而不是得到一個訪問令牌這裏是JSON錯誤對象,我得到:看似奇怪的OAuthException

{"error":{"message":"client_secret should not be passed to \/oauth\/access_token\/","type":"OAuthException"}} 

編輯:這是我使用建URL(原諒過度二號線的片段,請)

url = "https://graph.facebook.com/oauth/access_token/" 
url += "?" 
url += urllib.urlencode([('client_id',client_id), 
          ('redirect_uri', redirect_uri), 
          ('client_secret', client_secret), 
          ('code', code)]) 

其中的變量保持正確的價值觀。(檢查> 5倍)

+0

很奇怪,因爲你當然應該傳遞client_secret!只是爲了掩蓋顯而易見的情況,您正在使用https://graph.facebook.com/oauth/access_token,對嗎?並確定https? –

+0

@FloydWilburn是的,據我所知,一切都很好......我只是編輯了這個問題來添加構建url的代碼。看一看。 –

回答

8

您應該刪除/立刻ACCESS_TOKEN在URL後,以便它讀取,然後你的參數graph.facebook.com/oauth/access_token?。如果沒有這樣做,請顯示您生成的完整示例網址(真正的client_secret是當然的),因爲我不熟悉urllib.urlencode以確保格式化,儘管該部分看起來像一目瞭然。

+0

我在編碼URL方面非常有經驗:)所以請確定。基本上,urllib.urlencode([(「x」,「y」),('a','b')])會返回「x = y&a = b」來處理%替換。我會嘗試刪除尾隨的「/」。 –

+4

這真棒@floyd,它的工作。我什麼時候可以見你,讓我擁抱你? :P :)事實上,FB API開發人員對他們無法處理這樣一個瑣碎的案例感到羞恥。 –