Yahoo! ID連携 PHP SDK ダウンロードして sample.php を動かすだけなのですが、そのままでは動作しないので、必ず1行追加する必要があります
<?php
/**
* The MIT License (MIT)
*
* Copyright (C) 2014 Yahoo Japan Corporation. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
require("autoload.php");
use YConnect\Constant\OIDConnectDisplay;
use YConnect\Constant\OIDConnectPrompt;
use YConnect\Constant\OIDConnectScope;
use YConnect\Constant\ResponseType;
use YConnect\Credential\ClientCredential;
use YConnect\YConnectClient;
header( "Content-Type: text/html; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );
// アプリケーションID, シークレット
$client_id = "";
$client_secret = "";
// 各パラメータ初期化
$redirect_uri = "http://localhost/yconnect/sample.php";
// リクエストとコールバック間の検証用のランダムな文字列を指定してください
$state = "44Oq44Ki5YWF44Gr5L+644Gv44Gq44KL77yB";
// リプレイアタック対策のランダムな文字列を指定してください
$nonce = "5YOV44Go5aWR57SE44GX44GmSUTljqjjgavjgarjgaPjgabjgog=";
$response_type = ResponseType::CODE_IDTOKEN;
$scope = array(
OIDConnectScope::OPENID,
OIDConnectScope::PROFILE,
OIDConnectScope::EMAIL,
OIDConnectScope::ADDRESS
);
$display = OIDConnectDisplay::DEFAULT_DISPLAY;
$prompt = array(
OIDConnectPrompt::DEFAULT_PROMPT
);
// クレデンシャルインスタンス生成
$cred = new ClientCredential( $client_id, $client_secret );
// YConnectクライアントインスタンス生成
$client = new YConnectClient( $cred );
$client->disableSSLCheck();
// デバッグ用ログ出力
$client->enableDebugMode();
try {
// Authorization Codeを取得
$code_result = $client->getAuthorizationCode( $state );
if( !$code_result ) {
/*****************************
Authorization Request
*****************************/
// Authorizationエンドポイントにリクエスト
$client->requestAuth(
$redirect_uri,
$state,
$nonce,
$response_type,
$scope,
$display,
$prompt
);
} else {
/****************************
Access Token Request
****************************/
// Tokenエンドポイントにリクエスト
$client->requestAccessToken(
$redirect_uri,
$code_result
);
echo "<h1>Access Token Request</h1>";
// アクセストークン, リフレッシュトークン, IDトークンを取得
echo "ACCESS TOKEN : " . $client->getAccessToken() . "<br/><br/>";
echo "REFRESH TOKEN: " . $client->getRefreshToken() . "<br/><br/>";
echo "EXPIRATION : " . $client->getAccessTokenExpiration() . "<br/><br/>";
/*****************************
Verification ID Token
*****************************/
// IDトークンを検証
$client->verifyIdToken( $nonce );
echo "ID TOKEN: <br/>";
echo "<pre>" . print_r( $client->getIdToken(), true ) . "</pre>";
/************************
UserInfo Request
************************/
// UserInfoエンドポイントにリクエスト
$client->requestUserInfo( $client->getAccessToken() );
echo "<h1>UserInfo Request</h1>";
echo "UserInfo: <br/>";
// UserInfo情報を取得
echo "<pre>" . print_r( $client->getUserInfo(), true ) . "</pre>";
}
} catch ( ApiException $ae ) {
// アクセストークンが有効期限切れであるかチェック
if( $ae->invalidToken() ) {
/************************************
Refresh Access Token Request
************************************/
try {
// 保存していたリフレッシュトークンを指定してください
$refresh_token = "STORED_REFRESH_TOKEN";
// Tokenエンドポイントにリクエストしてアクセストークンを更新
$client->refreshAccessToken( $refresh_token );
echo "<h1>Refresh Access Token Request</h1>";
echo "ACCESS TOKEN : " . $client->getAccessToken() . "<br/><br/>";
echo "EXPIRATION : " . $client->getAccessTokenExpiration();
} catch ( TokenException $te ) {
// リフレッシュトークンが有効期限切れであるかチェック
if( $te->invalidGrant() ) {
// はじめのAuthorizationエンドポイントリクエストからやり直してください
echo "<h1>Refresh Token has Expired</h1>";
}
echo "<pre>" . print_r( $te, true ) . "</pre>";
} catch ( \Exception $e ) {
echo "<pre>" . print_r( $e, true ) . "</pre>";
}
} else if( $ae->invalidRequest() ) {
echo "<h1>Invalid Request</h1>";
echo "<pre>" . print_r( $ae, true ) . "</pre>";
} else {
echo "<h1>Other Error</h1>";
echo "<pre>" . print_r( $ae, true ) . "</pre>";
}
} catch ( \Exception $e ) {
echo "<pre>" . print_r( $e, true ) . "</pre>";
}
ヘッダー出力は、ユーザ情報が UTF-8 なので設定しています。 アプリケーションID, シークレットは、アプリケーションの管理から取得して下さい Yahoo! のログインボタンをクリックすると、最終的にはユーザ情報が表示されます。 1) Yahoo! のログインボタンをクリック 2) ログイン( ログイン済みでは表示されない ) 3) アプリケーション認証4) ユーザ情報 補足情報 本来なら、ここから Yahoo! ボックスの API にアクセスしていけるはずなのですが、どうも現在はまともに動いていないようです。WEB で調べてもリリース当時( 2014/02 ) に2件ほどテストが成功したような記事がありましたが、現状全く動作したという情報がありません。自分でも、いろいろやってみましたが、無理でした。ドキュメントも中途半端にお茶を濁した感がありますので、チャレンジしないほうがいいです。
|
|
【APIの最新記事】
- WebRTC による WEBカメラ表示( 2018/11/15 ) : iPhone + Safari は iOS11 のみで確認
- PHP で Mastodon にアプリを登録して投稿する手順
- Google スプレッドシートの内容を JSON として localhost で取得する手順
- WebRTC による WEBカメラ表示を canvas にコピーして画像に変換し、サーバへアップロードする
- WebRTC による WEBカメラ表示
- Amazon API の 503エラー の対処について
- ドコモ デベロッパーサポートで API使いたいと思ってサインアップしようとしたら・・・・。法人情報は後から登録しましょう
- 手動で Facebook API の 60日間の アクセストークンを取得する
- Facebook Graph API Explorer でカスタムプライバシー設定をした投稿を行う
- C#(.NET) : Google Spreadsheets API version 3.0でGoogleスプレッドシートを参照
- Twitpic の画像URLを取得する API が変わっているようなのですが


4) ユーザ情報
補足情報
本来なら、ここから Yahoo! ボックスの API にアクセスしていけるはずなのですが、どうも現在はまともに動いていないようです。WEB で調べてもリリース当時( 2014/02 ) に2件ほどテストが成功したような記事がありましたが、現状全く動作したという情報がありません。自分でも、いろいろやってみましたが、無理でした。ドキュメントも中途半端にお茶を濁した感がありますので、チャレンジしないほうがいいです。




