oriceon/oauth-5-laravel で Pocket API の OAuth 認証を検証したときのメモ
検証環境
$ php --version
PHP 5.5.19 (cli) (built: Nov 12 2014 12:35:44)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
$ php artisan --version
Laravel Framework version 5.2.43
oriceon/oauth-5-laravel のインストール
composer.json に下記を追加
"require": {
"oriceon/oauth-5-laravel": "dev-master"
}
composer update を実行
$ composer update
サンプルコード
.env に下記を追加
# oauth
POCKET_CLIENT_ID=Your-Consumer-Key
config/oauth-5-laravel.php
<?php
return [
'storage' => '\\OAuth\\Common\\Storage\\Session',
'consumers' => [
'Pocket' => [
'client_id' => env('POCKET_CLIENT_ID'),
'client_secret' => null,
'scope' => [],
],
]
];
app/Http/Controllers/PocketController.php
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class PocketController extends Controller
{
public function loginOAuth(Request $request)
{
$pocketService = \OAuth::consumer('Pocket',url('/loginresult'));
$reqToken = $pocketService->requestRequestToken();
$request->session()->put( 'code', $reqToken );
$url = $pocketService->getAuthorizationUri([ 'request_token' => $reqToken ]);
return redirect((string)$url);
}
public function loginResult(Request $request)
{
$code = $request->session()->get('code');
$pocketService = \OAuth::consumer('Pocket',url('/loginresult'));
if ( ! is_null($code))
{
$token = $pocketService->requestAccessToken($code);
$params = [
'consumer_key' => env('POCKET_CLIENT_ID'),
'access_token' => $token->getAccessToken(),
'sort' => 'newest',
'count' => '1',
];
$json_result = $pocketService->request('https://getpocket.com/v3/get', 'POST', json_encode($params), [ 'Content-Type' => 'application/json' ]);
$result = json_decode( $json_result );
dd($result);
}
else
{
dd('code is null.');
}
}
}
app/Http/routes.php
<?php
Route::get('login', 'PocketController@loginOAuth' );
Route::get('loginresult', 'PocketController@loginResult' );
autoload 更新
$ php artisan optimize