2017-07-13 42 views
1

我使用Twitter的API實現的OAuth文檔以下內容: Application-only authentication 我用消費者的關鍵&消費者揭祕如下創建POST請求:Twitter的API應用程序的唯一身份驗證

POST http://api.twitter.com/oauth2/token 
Authorization: Basic T3k2TlA4SnpCVGRiNXlFTUt2dGswamJGSTpiSlpEYm1xeExyeDJKU25JbUplcWdlQTJkREcwZXg0bUNtOUdGTGJ1TGF3TkZkNkxqNg== 
Content-Type: application/x-www-form-urlencoded;charset=UTF-8 
grant_type=client_credentials 

我有以下錯誤性反應:

"{"errors":[{"code":99,"label":"authenticity_token_error","message":"Unable to verify your credentials"}]}"

雖然,我是從我的應用程序設置中獲取數據

回答

1

我收到了您的請求的令牌。

重要!之後您必須使安全令牌無效,永遠不會在公共資源上共享您的憑據,提供一些虛擬數據。

你的問題是在文檔中的章節中描述的「無效的請求,以獲得或撤銷承載令牌」

grant_type=client_credentials不是首部,但是請求的主體:

curl --request POST \ 
    --url https://api.twitter.com/oauth2/token \ 
    --header 'authorization: Basic T3k2TlA4SnpCVGRiNXlFTUt2dGswamJGSTpiSlpEYm1xeExyeDJKU25JbUplcWdlQTJkREcwZXg0bUNtOUdGTGJ1TGF3TkZkNkxqNg==' \ 
    --header 'content-type: application/x-www-form-urlencoded' \ 
    --data grant_type=client_credentials 

附加雖然:也許問題是您正在使用http://... URL,而正確的是使用https://...鏈接

5

按照2個步驟操作。我已經做到了我自己&測試也。其工作正常,你將能夠獲得訪問令牌

步驟1)

你的情況,你有你的消費者更換下面兩個值關鍵&祕密:

Cosumer關鍵 = xvz1evFS4wEEPTGEFPHBog

消費者祕密 = L8qq9PZyRg6ieKGEKhZol GC0vJWLw8iEJ88DRdyOg

使用消費者密鑰&消費者的祕密,我們必須生成一個基地64字符串。因此,使用冒號(:)作爲分隔符

所以在我的情況下做到這一點,我們必須首先連擊消費者鍵&消費祕密串聯的字符串將是:

xvz1evFS4wEEPTGEFPHBog:L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg 

注:應該不會成串聯字符串中的空格

所以現在我們準備好了我們的連接字符串。現在我們必須生成base 64字符串。爲此,我們可以使用在線服務來做到這一點。 打開這個URL http://www.motobit.com/util/base64-decoder-encoder.asp並粘貼連接字符串&點擊「轉換源代碼」。這會給你Base 64字符串。

在我的情況,基地64串(你將在你的情況不同):

xvz1evFS4wEEPTGEFPHBog:L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg

現在,通過使用我們的Base64編碼字符串,我們不得不產生base 64編碼串。所以要做到這一點,我們可以使用在線服務。打開鏈接https://www.base64encode.org/並粘貼我們的Base64字符串&點擊「編碼」。

最後你會得到Base64編碼字符串,我們必須在令牌請求中使用它。 對我來說,它看起來像這樣:

eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJnNmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw ==

步驟2)

現在打開你的郵差(這是插件的谷歌Chrome瀏覽器測試API的)&做下面的步驟:(我附上郵遞員請求的截圖,如果你是陌生的郵遞員,請看看它)

  1. 該請求必須是HTTP POST請求。 url是:https://api.twitter.com/oauth2/token
  2. 該請求必須包含值爲Basic的授權標頭。 例如:

    基本eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJnNmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZw ==

  3. 請求必須包括與應用程序/ x-WWW窗體-urlencoded的值的Content-Type頭; 例如:內容類型=應用程序/ x-WWW窗體-urlencoded
  4. 點擊正文 - >原,並鍵入grant_type = client_credentials

enter image description here

enter image description here

點擊發送,&您將獲得您的訪問令牌。

讓我知道如果您在執行此步驟時遇到任何問題。

+0

你嘗試在你結束了嗎? – sForSujit

+0

是的,但主要問題是一個無用的「https」前綴 – Evgeniy

+0

@ЕвгенийEvgeniyOhhhh是的,我應該是https。無論如何這將幫助人們實現這一點,沒有任何麻煩 – sForSujit

1

應該在你的頭部和Twitter使用這種格式的類型使用OAuth 1.0

Authorization:OAuth oauth_consumer_key="{consumer-key}",oauth_token="{oauth token},oauth_signature_method="HMAC-SHA1",oauth_timestamp="1500034490",oauth_nonce="ycnFHs",oauth_version="1.0",oauth_signature="{oauth-signature}" 
相關問題