前提
laravelでtwitterと連携したサービスを開発しています。
OAuth2.0でリフレッシュトークンを取得したいです。
実現したいこと
ここに実現したいことを箇条書きで書いてください。
- PHP上でcurlコマンドを実行してアクセストークンとリフレッシュトークンを取得する
発生している問題・エラーメッセージ
string(89) "{"error":"invalid_request","error_description":"Value passed for the token was invalid."}"
該当のソースコード
PHP
1 $code = htmlspecialchars($_GET["code"]); 2 $client_id = config('twitterToken.client_id'); 3 $ch = curl_init(); 4 5 curl_setopt($ch, CURLOPT_URL, 'https://api.twitter.com/2/oauth2/token?code='.$code.'&grant_type=authorization_code&client_id='.$client_id.'&code_verifier=challenge'); 6 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 7 curl_setopt($ch, CURLOPT_POST, 1); 8 curl_setopt($ch, CURLOPT_USERPWD, $client_id . ':' . config('twitterToken.client_secret')); 9 10 $headers = array(); 11 $headers[] = 'Content-Type: application/x-www-form-urlencoded'; 12 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 13 14 $result = curl_exec($ch); 15 if (curl_errno($ch)) { 16 echo 'Error:' . curl_error($ch); 17 } 18 curl_close($ch); 19
試したこと
Macbookのターミナルで以下のcurlコマンドを実行したところ
トークンが返ってきました
curl
1curl --location --request POST 'https://api.twitter.com/2/oauth2/token' \ 2--header 'Content-Type: application/x-www-form-urlencoded' \ 3--basic -u "client_id:client_secret" \ 4--data-urlencode "code=コールバックURLから取得" \ 5--data-urlencode 'grant_type=authorization_code' \ 6--data-urlencode "client_id=client_id" \ 7--data-urlencode 'redirect_uri=http://127.0.0.1:8000/OAuthCallback' \ 8--data-urlencode 'code_verifier=challenge'
補足情報(FW/ツールのバージョンなど)
Laravel v8.83.23
PHP v7.4.18

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。