質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

1回答

2376閲覧

Twitter API v2によるフォロー処理

funash

総合スコア0

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/12/23 00:31

Twitter apiが正式にv2となったことに伴い、
自作のWebアプリ(php)についてもv1.1からv2に対応したいと考えています。

その際、フォロー処理が動作せず、困っています。
アカウントは"Elevated"です。

状況は以下のとおりです。

idについてはフォローする側を"11111111111111"、される側を"22222222222222"に置き換えています。

php

1require_once("tmhOAuth.php"); 2class twitterApi { 3 function __construct() { 4 5 //OAuthオブジェクトを生成する 6 $this->tweetObj = new tmhOauth( 7 array( 8 "consumer_key" => $ConsumerKey, 9 "consumer_secret" => $ConsumerSecret, 10 "token" => $AccessToken, 11 "secret" => $AccessTokenSecret, 12 "curl_ssl_verifypeer" => false 13 ) 14 ); 15 } 16 function getfollow() { 17 //Twitter REST API 呼び出し 18 19 $this->tweetObj->request( 20 'POST' 21 ,"https://api.twitter.com/2/users/11111111111111/following" 22 ,array( 23 "target_user_id" => "22222222222222", 24 ) 25 ); 26 // jsonを配列に変換 27 $arrayData = json_decode($this->tweetObj->response["response"], true); 28 if(isset($arrayData['errors']) && $arrayData['errors'] != '') { 29 print_r($arrayData); 30 return false; 31 } else { 32 //echo "OK"; 33 return $this->tweetObj->response["response"]; 34 } 35 } 36 37$response = json_decode($tweetObj->getfollow(), true); 38var_dump($response); 39

これを実行した際、$responseに返ってくる値は以下の通りです。

Array ( [errors] => Array ( [0] => Array ( [parameters] => Array ( ) [message] => Requests with bodies must have content-type of application/json. ) ) [title] => Invalid Request [detail] => One or more parameters to your request was invalid. [type] => https://api.twitter.com/2/problems/invalid-request )

また別のアカウントを利用して、Twitter API exploreを使ってテストしましたが、
以下の画像のようにForbiddenで返ってきます。

Twitter API explore

アカウントの設定が問題なのでしょうか?

Twitter apiに詳しい方よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

まだ問題解決中か分かりませんが、先日私もTwitter API v2で似たような事象で悩んだため助けになれればと思います。
私の場合はアクセストークン発行時のスコープを修正することで解決しました。以下はSocialiteで認証画面にリダイレクトしている部分です。scopes()に任意のスコープ定義をします。フォロー処理をする場合では試していませんが恐らくfollows.writeが必要になります。
詳細は公式ドキュメントを参照ください。https://developer.twitter.com/en/docs/authentication/oauth-2-0/authorization-code

return Socialite::driver('twitter') ->scopes(['tweet.read', 'tweet.write', 'users.read', 'offline.access', 'follows.read','follows.write']) ->redirect();

投稿2022/09/25 02:33

編集2022/09/25 02:35
hidetakamaru

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

funash

2022/09/27 09:12

回答ありがとうございます。 上記のphpによる実装をあきらめて、別の方法を開発していました。 ただ、やはりphpでの実装方法も押さえておきたいので、とても助かります。 が、私の勉強不足でtmhOAuthの場合、どこでscopeがわかりませんでした。 Socialiteで認証画面にリダイレクトする際に、戻り値に上記のコードを入れているという理解でいいでしょうか?
hidetakamaru

2022/10/08 05:23 編集

流れとしては 1.Socialiteで認証画面にリダイレクト ↓ 2.ユーザーのアクセストークン発行 ↓ 3.tmhOAuthにアクセストークン設定してtwitterAPI叩く のようになると思いますが、 1のSocialiteでスコープ定義することで取得するアクセストークンが持っている実行権限が変わるイメージです。 なのでSocialiteのscopeで「follows.read」など設定するとtmhOAuthでAPI叩く際にフォロワーを読み込む権限があるためフォロワー取得可能になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問