2017-07-13 8 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 

私はエラーの下に持っresponceを得ました:

"{"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つの手順に従ってください。私は&が、それはまた、正常に動作.Its、あなたはあなたのケースではアクセストークン

ステップ1)

を取得することができます、あなたは、消費者との二つの値の下に交換する必要がテストされ、それを自分自身を行っています秘密鍵&:

Cosumerキー = xvz1evFS4wEEPTGEFPHBog

秘密消費者 = L8qq9PZyRg6ieKGEKhZol GC0vJWLw8iEJ88DRdyOg

コンシューマーキー&コンシューマーキーを使用して、基本64文字列を生成する必要があります。

xvz1evFS4wEEPTGEFPHBog:L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg 

注:ありません必要がありますので、我々は、セパレータ

としてコロン(:)を使用して最初のCONCATENATEコンシューマーキー&消費者の秘密を持っているので、私の場合には、連結した文字列がなることを行うには連結された文字列の空白である

これで、連結文字列を準備しました。これで、基数64の文字列を生成する必要があります。このために、オンラインサービスを利用してこれを行うことができます。 http://www.motobit.com/util/base64-decoder-encoder.aspこのURLを開き、連結された文字列&を貼り付けます。「ソースコードを変換する」をクリックします。これでBase 64文字列が得られます。私の場合は

は、ベース64文字列は(あなたは、あなたのケースで異なる必要があります)です。

xvz1evFS4wEEPTGEFPHBog:L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg

は今、私たちのBase64で文字列を使用することによって、我々はベース64エンコードを生成する必要が文字列。そうするために、我々はオンラインサービスを利用することができます。リンクhttps://www.base64encode.org/を開き、Base64ストリング&を貼り付けます。「エンコード」をクリックします。

最後にトークン要求で使用するBase64エンコード文字列を取得します。私の場合は 、それは次のようになります。

eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJnNmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZwの==

ステップ2)今

あなたPOSTMANを開きます(これは、テストのAPIのためのGoogle Chromeのプラグイン)&がそうです以下の手順を実行します(POSTMANの新機能の場合は、POSTMANリクエストのスクリーンショットも添付しています)。

  1. 要求はHTTP POST要求でなければなりません。 urlは次のとおりです。https://api.twitter.com/oauth2/token
  2. 要求には、値がBasicのAuthorizationヘッダーが含まれている必要があります。例えば

    基本eHZ6MWV2RlM0d0VFUFRHRUZQSEJvZzpMOHFxOVBaeVJnNmllS0dFS2hab2xHQzB2SldMdzhpRUo4OERSZHlPZwの==

  3. 要求は、アプリケーション/ x-www-form-urlencodedでの値でContent-Typeヘッダを含まなければなりません。例えば :コンテンツタイプ=アプリケーション/ x-www-form-urlencodedで
  4. Body->生をクリックし、grant_typeを入力= client_credentials

enter image description here

enter image description here

SENDをクリックすると、&にアクセストークンが届きます。

この手順を実行中に問題が発生した場合は、教えてください。

+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}" 
関連する問題