Skip to content

Instantly share code, notes, and snippets.

@daiki44
Last active June 30, 2018 07:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save daiki44/1632d2b412713ed5071aa65b1f03b000 to your computer and use it in GitHub Desktop.
Save daiki44/1632d2b412713ed5071aa65b1f03b000 to your computer and use it in GitHub Desktop.
【Laravel5.5 × abraham TwitterOAuth】PHPでTwitter連携をつくってみた ref: https://qiita.com/daiki_44/items/fe11d57e53647f4b59f4
TWITTER_CONSUMER_KEY=xxxxxxxxxxxx
TWITTER_CONSUMER_SECRET=xxxxxxxxxxxx
TWITTER_ACCESS_TOKEN=xxxxxxxxxxxx
TWITTER_ACCESS_TOKEN_SECRET=xxxxxxxxxxxx
TWITTER_CALLBACK_URL=http://xxxx.com/login/twitter/callback
composer require abraham/twitteroauth
public function getFollowerList(Request $request)
{
# userがある前提です
$user = User::find(Auth::user()->user_id);
$twitter = new TwitterOAuth(
config('twitter.consumer_key'),
config('twitter.consumer_secret')
);
# 指定したユーザーのフォロワーを取得
$timeline = $twitter->get('followers/list', array(
'user_id' => Auth::User()->twitter_id,
));
dd($ret);
}
public function getFollowList(Request $request)
{
# userがある前提です
$user = User::find(Auth::user()->user_id);
$twitter = new TwitterOAuth(
config('twitter.consumer_key'),
config('twitter.consumer_secret')
);
# 指定したユーザーのフォローを取得
$timeline = $twitter->get('friends/list', array(
'user_id' => Auth::User()->twitter_id,
));
dd($ret);
}
public function getTimeline(Request $request)
{
# userがある前提です
$user = User::find(Auth::user()->user_id);
$twitter = new TwitterOAuth(
config('twitter.consumer_key'),
config('twitter.consumer_secret')
);
# 指定したユーザーのタイムラインを取得
$timeline = $twitter->get('statuses/user_timeline', array(
'user_id' => Auth::User()->twitter_id,
));
dd($ret);
}
# useを忘れずに!
use Abraham\TwitterOAuth\TwitterOAuth;
class LoginController extends Controller
public function twitter()
{
$twitter = new TwitterOAuth(
config('twitter.consumer_key'),
config('twitter.consumer_secret')
);
# 認証用のrequest_tokenを取得
# このとき認証後、遷移する画面のURLを渡す
$token = $twitter->oauth('oauth/request_token', array(
'oauth_callback' => config('twitter.callback_url')
));
# 認証画面で認証を行うためSessionに入れる
session(array(
'oauth_token' => $token['oauth_token'],
'oauth_token_secret' => $token['oauth_token_secret'],
));
# 認証画面へ移動させる
## 毎回認証をさせたい場合: 'oauth/authorize'
## 再認証が不要な場合: 'oauth/authenticate'
$url = $twitter->url('oauth/authenticate', array(
'oauth_token' => $token['oauth_token']
));
return redirect($url);
}
public function twitterCallback(Request $request)
{
$oauth_token = session('oauth_token');
$oauth_token_secret = session('oauth_token_secret');
# request_tokenが不正な値だった場合エラー
if ($request->has('oauth_token') && $oauth_token !== $request->oauth_token) {
return Redirect::to('/login');
}
# request_tokenからaccess_tokenを取得
$twitter = new TwitterOAuth(
$oauth_token,
$oauth_token_secret
);
$token = $twitter->oauth('oauth/access_token', array(
'oauth_verifier' => $request->oauth_verifier,
'oauth_token' => $request->oauth_token,
));
# access_tokenを用いればユーザー情報へアクセスできるため、それを用いてTwitterOAuthをinstance化
$twitter_user = new TwitterOAuth(
config('twitter.consumer_key'),
config('twitter.consumer_secret'),
$token['oauth_token'],
$token['oauth_token_secret']
);
# 本来はアカウント有効状態を確認するためのものですが、プロフィール取得にも使用可能
$twitter_user_info = $twitter_user->get('account/verify_credentials');
dd($twitter_user_info);
}
<?php
# configファイルは自作してください。
return [
'consumer_key' => env('TWITTER_CONSUMER_KEY', ''),
'consumer_secret' => env('TWITTER_CONSUMER_SECRET', ''),
'access_token' => env('TWITTER_ACCESS_TOKEN', ''),
'access_token_secret' => env('TWITTER_ACCESS_TOKEN_SECRET', ''),
'callback_url' => env('TWITTER_CALLBACK_URL', ''),
];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment