このブログを検索

2016/05/02

PHPでtwitter api のoauthが簡単にできるようになった

thanks to abraham

https://twitteroauth.com/


oauthに再挑戦。

久しぶりだから情報も増えているだろうと期待して。


http://qiita.com/sofpyon/items/982fe3a9ccebd8702867

phpか...

まあいいや、やってみよう。


https://twitteroauth.com/


composer ?

いれる。

phpのバージョンが古いと言われる。


http://qiita.com/zaburo/items/fd67b294c610d54c3aee

レポジトリを変更する。

5.4.45にする。



・・・・


めんどくさいので結果だけ。

以下の情報をほぼそのまま参考にした。

http://qiita.com/sofpyon/items/982fe3a9ccebd8702867



composerで twitteroauthをインストールするときは、
実際にphpスクリプトを動かすディレクトリにする。


php 5.3だから出るエラーが出てしまった。
5.4.45にあげたのに。

composerを入れた後だったからだろうか?
よくわからないが phpの書き方を変えた。



/var/www/html/

で動かすとして、

そこに、下記ファイルを作る。

common.php
login.php
callback.php
mypage.php


中身


# cat common.php
<?php

define( 'CONSUMER_KEY', '------ your consumuer key -----' );
define( 'CONSUMER_SECRET', '------ your consumuer secret -----' );
define( 'OAUTH_CALLBACK', 'http://example.com/callback.php' ); ※URLは仮





# cat login.php
<?php

session_start();

require_once 'common.php';
require_once 'vendor/abraham/twitteroauth/autoload.php';

use Abraham\TwitterOAuth\TwitterOAuth;

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);

$request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => OAUTH_CALLBACK));

$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];

$url = $connection->url('oauth/authenticate', array('oauth_token' => $request_token['oauth_token']));

header( 'location: '. $url );






# cat callback.php
<?php

session_start();

require_once 'common.php';
require_once 'vendor/abraham/twitteroauth/autoload.php';

use Abraham\TwitterOAuth\TwitterOAuth;

$request_token = array();
$request_token['oauth_token'] = $_SESSION['oauth_token'];
$request_token['oauth_token_secret'] = $_SESSION['oauth_token_secret'];

if (isset($_REQUEST['oauth_token']) && $request_token['oauth_token'] !== $_REQUEST['oauth_token']) {
    die( 'Error!' );
}

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $request_token['oauth_token'], $request_token['oauth_token_secret']);

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

session_regenerate_id();

header( 'location: /bl/mypage.php' );






# cat mypage.php
<?php

session_start();

require_once 'common.php';
require_once 'vendor/abraham/twitteroauth/autoload.php';

use Abraham\TwitterOAuth\TwitterOAuth;

$access_token = $_SESSION['access_token'];

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);

$user = $connection->get("account/verify_credentials");

echo 'hello, ';
echo $user->name;





http://example.com/login.php ※URLはサンプル

にブラウザでアクセスする。


アプリへのアクセスを許可するかとたずねられて許可すると、


あなたのnameが「ほげほげ君」だとしたら、


hello, ほげほげ君


と表示される。




oauth自体はすごく簡単にできるようになった。

ここまでできてしまえば、あとは自分が取得したい情報を表示、
操作したいAPIを使ってやりたいことをやればよい。


・・・が、そこがよくわからない・・・。



本当はpythonでやりたい。
pythonにも同様のライブラリがあるようなので、今度試してみたい。