[英]Authentication failure with code 32
嗨,有人可以幫我嗎?
import tweepy
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_TOKEN = '-'
ACCESS_TOKEN_SECRET = ''
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)
status = "Testing!"
api.update_status(status=status)
它給了我那個錯誤
'code': 32, 'message': '無法驗證您的身份。
您的代碼沒有任何問題,這是一個身份驗證問題。 請參考https://dev.twitter.com/overview/api/response-codes
代碼:32
文本:無法驗證您的身份
描述:您的呼叫無法按撥號完成。
在 Twitter 的開發者論壇上, 這里有一個線程。 你可能應該用 Twitter 來檢查一下。
ACCESS_TOKEN
ACCESS_TOKEN_SECRET
。ACCESS_TOKEN
和ACCESS_TOKEN_SECRET
可能已過期,因此請重新生成它們ACCESS_TOKEN_SECRET
試。可能您忘記單擊Twitter 應用程序管理“密鑰和訪問令牌”底部的“創建我的訪問令牌”按鈕。
twitter API 的常見問題是,如果您最近更改了應用程序的權限,則必須重新生成您的 OAUTH 密鑰
對於 Jupyter Notebook,如果您首先執行以下操作,
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)
然后如果你正在運行下一個片段
status = "Testing!"
api.update_status(status=status)
您可能會收到錯誤 32,請嘗試運行整個代碼塊並確保檢查令牌和鍵后的空格
三重檢查您提供代幣的方式
對我來說,問題是程序員有時會犯的那些愚蠢的錯誤之一,需要幾個小時來調試......
我通過文檔提供令牌,對於每一行,我都裁剪了最后一個字符(換行符 =“\\n”)。 由於文檔以最后一個用戶的令牌的最后一個字符結尾,每次我嘗試登錄他時,都會出現錯誤 32,因為缺少最后一個令牌的最后一個字符。 在文檔末尾添加一個新行解決了這個問題。
故事寓意:檢查您將令牌提供給 API 的方式,並尋找一些簡單但致命的錯誤
FWIW 我會隨機得到這個錯誤,直到我意識到它與我在 url 中編碼狀態文本的方式有關——它(幾乎)與我的 OAuth 標頭無關,而這些標頭基本上是正確的。
一旦我將狀態文本轉換為表單參數,一切都會順利進行。 我懷疑這個問題因我的 oauth 庫(npm 包oauth-1a
)使用 url 和狀態文本並可能使用諸如encodeURI()
類的函數以不同方式對其進行編碼。
Node.js
偽代碼如下,
// Create authorization header using oauth library
const oauthHeader = ...
const formData = new FormData();
formData.append('status', 'Messy status text with spaces');
fetch(
'https://api.twitter.com/1.1/statuses/update.json', // No status text in url
{
method: 'POST',
body: formData,
headers: {
...oauthHeader
...formData.getHeaders(),
}
}
)
發生此問題的原因可能是您的 ACCESS_TOKEN 和 ACCESS_TOKEN_SECRET 是使用只讀權限創建的。 您必須返回“設置”到“應用程序權限”並編輯為“讀寫”或“讀寫和直接消息”,然后重新生成您的 ACCESS_TOKEN 和 ACCES_TOKEN_SECRET。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.