cakephp3.xtwitteroauthlogin世界で一番簡単な

2016年8月13日更新 view: 59 view
https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Oauth_logo.svg/2000px-Oauth_logo.svg.png

twitter api でログインしよう

今回使うライブラリは
abraham/twitteroauth
のみ。

jsonでabraham twitter oauth をインストール。

スポンサードリンク
    "require": {
"php": ">=5.5.9",
"cakephp/cakephp": "3.2.*",
"abraham/twitteroauth": "*", //ここ!
"friendsofcake/search":"*",
"mobiledetect/mobiledetectlib": "2.*",
"cakephp/migrations": "dev-master",
"cakephp/plugin-installer": "*"
},

を追記し、
composer update をする。

できになるソースをいっきに貼っておきます。

<?php
/**
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @since 0.2.9
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
namespace App\Controller;

use Cake\Controller\Controller;
use Cake\Event\Event;
use Cake\ORM\TableRegistry;

use App\Model\Entity\User;
use Cake\Auth\DefaultPasswordHasher;

//ここでTwitterOAuthを使えるようにする
use Abraham\TwitterOAuth\TwitterOAuth;



class UsersController extends AppController
{

public function oauth()
{
// twitterのコネクション生成に必要な情報を設定
$consumerKey = "aaVu0Gi1AKPp1rFYoJy2wJvUsDcy";
$consumerSecret = "aaPkJtXm9sp7zxCT5PhZzMmGloOJYzfXeJ6l0dhu2gXvBtrvpuXe";
$callback_url = "http://twiseo.net/users/callback/";


//TwitterOAuthのインスタンスを生成し、Twitterからリクエストトークンを取得する
$connection = new TwitterOAuth($consumerKey,$consumerSecret);
$request_token = $connection->oauth("oauth/request_token",
["oauth_callback" => $callback_url]
);

//リクエストトークンはcallback.phpでも利用するのでセッションに保存する
$this->request->session()->write("oauth_token",$request_token['oauth_token']);
$this->request->session()->write("oauth_token_secret",$request_token['oauth_token_secret']);

// Twitterの認証画面へリダイレクト
$url = $connection->url("oauth/authorize",
["oauth_token" => $request_token['oauth_token']]
);
header('Location: ' . $url);

exit;
}


public function callback()
{
$consumerKey = "aaVu0Gi1AKPp1rFYoJy2wJvUsDcy";
$consumerSecret = "aaPkJtXm9sp7zxCT5PhZzMmGloOJYzfXeJ6l0dhu2gXvBtrvpuXe";

$oauth_token = $this->request->session()->read("oauth_token");
$oauth_token_secret = $this->request->session()->read("oauth_token_secret");


//Twitterからアクセストークンを取得する
$connection = new TwitterOAuth($consumerKey,$consumerSecret,$oauth_token,$oauth_token_secret);

$access_token = $connection->oauth("oauth/access_token",["oauth_verifier" => $_REQUEST['oauth_verifier']]);

pr($access_token);


//※重要※ ここでもう一度アクセストークンを使って接続をし直す

//OAuthトークンとシークレットも使って TwitterOAuth をインスタンス化
$connection = new TwitterOAuth($consumerKey,$consumerSecret, $access_token['oauth_token'], $access_token['oauth_token_secret']);

//ユーザー情報をGET
$user = $connection->get("account/verify_credentials");

pr($user);
exit;

}



}

まず、
consumerKey
consumerSecret
callback_url

をそれぞれ指定。
ちなみにtwitterappsはこちら。
https://apps.twitter.com/

流れ

/users/oauth/ にアクセス
自動的にTwitterへ。
認証ボタンを押す。
callbackに帰ってくる。

ここで大事なのが、
認証完了後、再度アクセストークンを使ってユーザーとして
TwitterOAuthをしないとプロフィールなどが取得できないので注意。

スポンサードリンク

関連記事

関連カテゴリ

まろにーちゃん

一位を目指して日々がんばっています!

ピックアップ

パソコン・ソフトウェア ランキング

5月23日 ( 火 ) にアクセスが多かった記事はこちら!