More Related Content
Similar to Yahoo!ボックスAPI Hackday資料 (20)
More from Yahoo!デベロッパーネットワーク (20)
Yahoo!ボックスAPI Hackday資料
- 34. トークン、リフレッシュトークンの取り方(authorization)
// 1.認証コードを取得画⾯面を表⽰示
$appid = 'dj0zaiZpPTZqSVJ5TW80NHh-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒-‐‑‒';
$url = ʻ‘https://auth.login.yahoo.co.jp/yconnect/v1/authorizationʼ’;
$params = '?response_̲type=code+id_̲token&client_̲id='.$appid.'&redirect_̲uri=oob&scope=openid&nonce=aaddeeff';
$url .= $params;
header(ʻ‘Location: ʼ’.$url); // アプリケーションでYahoo!の認証画⾯面にリダイレクト
// 2.トークン取得エンドポイントにリクエストしてトークン、リフレッシュトークンを取得する
$appid = ʻ‘YJDNで取得するアプリケーションIDʼ’;
$secret = ʻ‘YJDNで取得するシークレットʼ’;
$code = ʻ‘1.で取得してユーザに⼊入⼒力力させた認証コードʼ’;
$url = ʻ‘https://auth.login.yahoo.co.jp/yconnect/v1/tokenʼ’; // トークン取得エンドポイント
$params = 'grant_̲type=authorization_̲code&';
$params .= 'code=ʻ‘.$code;
$params .='&redirect_̲uri=oob';
$headers = array(
'Content-‐‑‒Type: application/x-‐‑‒www-‐‑‒form-‐‑‒urlencoded;charset=UTF-‐‑‒8',
'Authorization: Basic '.base64_̲encode($appid.':'.$secret),
);
$curl = curl_̲init();
curl_̲setopt($curl, CURLOPT_̲URL, $url_̲token);
curl_̲setopt($curl, CURLOPT_̲POST, true);
curl_̲setopt($curl, CURLOPT_̲RETURNTRANSFER, true);
curl_̲setopt($curl, CURLOPT_̲POSTFIELDS, $params);
curl_̲setopt($curl, CURLOPT_̲HTTPHEADER, $headers);
curl_̲setopt($curl, CURLOPT_̲VERBOSE, true);
$result = curl_̲exec($curl);
curl_̲close($curl);
33
- 37. 取得したトークンでUserInfoAPIへリクエスト
36
・リクエスト(GET)
<?php
$access_̲token = ʻ‘取得したアクセストークンʼ’;
$httpHeader = array(
ʻ‘GET /yconnect/v1/attribute?schema=openid HTTP/1.1ʼ’,
ʻ‘Host: userinfo.yahooapis.jpʼ’,
ʻ‘Authorization: Bearer ʻ‘ . $access_̲token,
);
$curlSetOptArray = array(
CURLOPT_̲URL => 'https://userinfo.yahooapis.jp/yconnect/v1/attribute?
schema=openid',
CURLOPT_̲HTTPHEADER => $httpHeader,
CURLOPT_̲VERBOSE => true,
CURLOPT_̲SSL_̲VERYFYPEER => true,
CURLOPT_̲HEADER => true,
);
$ch = curl_̲init();
curl_̲setopt_̲array($ch, $curlSetOptArray($ch, $curlSetOptArray);
$result = curl_̲exec($ch);
curl_̲close($ch);
- 45. ボックスユーザ情報取得:リクエスト
44
<?php
$access_̲token = ʻ‘取得したアクセストークンʼ’;
$guid = ʻ‘取得したGuidʼ’;
$url = ʻ‘https://ybox.yahooapis.jp/v1/user/fullinfo/ʼ’ . $guid;
$httpHeader = array(
ʻ‘Host:ybox.yahooapis.jpʼ’,
ʻ‘Authorization: Bearer ʻ‘ . $access_̲token,
);
$curlSetoptArray = array(
CURLOPT_̲URL => $url,
CURLOPT_̲HTTPHEADER => $httpHeader,
CURLOPT_̲RETURNTRANSFER => true,
CURLOPT_̲VERBOSE => true,
CURLOPT_̲HEADER => true,
);
$ch = curl_̲init();
curl_̲setopt_̲array($ch, $curlSetoptArray);
$result = curl_̲exec($ch);
curl_̲close($ch);
- 47. フォルダ作成:リクエスト
46
$sid = ʻ‘ユーザのSidʼ’;
$uid = ʻ‘ルートディレクトリ「/」のUniqIdʼ’;
$access_̲token = ʻ‘取得したアクセストークンʼ’;
$url = 'https://ybox.yahooapis.jp/v1/file/' . $sid . '/'.$uid;
// フォルダ作成のボディ
$body = ʻ‘<?xml version=“1.0” encoding=“UTF-‐‑‒8”?><Object><Name>作成したいフォルダの名前</Name></Object>ʼ’;
$httpHeader = array(
'Host:ybox.yahooapis.jp',
'Authorization: Bearer ' . $access_̲token,
);
$curlSetoptArray = array(
CURLOPT_̲URL => $url,
CURLOPT_̲HTTPHEADER => $httpHeader,
CURLOPT_̲RETURNTRANSFER => true,
CURLOPT_̲VERBOSE => true,
CURLOPT_̲HEADER => true,
CURLOPT_̲POST => true,
CURLOPT_̲POSTFIELDS => $body,
);
$ch = curl_̲init();
curl_̲setopt_̲array($ch, $curlSetoptArray);
$result = curl_̲exec($ch);
curl_̲close($ch);
- 48. フォルダ作成:レスポンス
47
<?xml version="1.0" encoding="utf-‐‑‒8" ?>
<Object>
<Sid>box-‐‑‒l-‐‑‒svq6zr7wylpytn3otktetn2gdq-‐‑‒1004</Sid>
<UniqId>17c80ee0-‐‑‒612e-‐‑‒481b-‐‑‒b73b-‐‑‒3afaf59f1aa6</UniqId> 作成されたフォルダのUniqId
<Path><![CDATA[/作成したいフォルダの名前]]></Path>
<ModifiedTime>2014-‐‑‒02-‐‑‒06T19:56:32+09:00</ModifiedTime>
</Object>
次:フォルダにファイルをアップロードする
- 50. アップロード:リクエスト
49
<?php
$token = ʻ‘アクセストークンʼ’;
$sid = ʻ‘ユーザのSidʼ’;
$uid = ʻ‘アップロードするフォルダのUniqIdʼ’;
$file = ʻ‘/tmp/test.jpgʼ’;
$file_̲name = ʻ‘test.jpgʼ’;
$body = file_̲get_̲contents($file);
$headers = array(
ʻ‘Authorization: Bearer ʼ’ . $token,
ʻ‘Content-‐‑‒Type: multipart/form-‐‑‒dataʼ’,
ʻ‘Content-‐‑‒length: ʻ‘ . filesize($file),
ʻ‘box-‐‑‒obj-‐‑‒sid: ʻ‘ . $sid,
ʻ‘box-‐‑‒obj-‐‑‒parentuniqid: ʻ‘ . $uid,
ʻ‘box-‐‑‒obj-‐‑‒filename: ʻ‘. $file_̲name,
ʻ‘box-‐‑‒obj-‐‑‒md5: ʻ‘ . Md5($body),
);
$url = 'https://upload.ybox.yahooapis.jp/v1/upload';
$curl = curl_̲init($url);
curl_̲setopt($curl,CURLOPT_̲HEADER, true);
curl_̲setopt($curl,CURLOPT_̲HTTPHEADER, $headers);
curl_̲setopt($curl,CURLOPT_̲POST,true);
curl_̲setopt($curl,CURLOPT_̲RETURNTRANSFER, true);
curl_̲setopt($curl,CURLOPT_̲POSTFIELDS,$body);
curl_̲setopt($curl,CURLOPT_̲VERBOSE,true);
$result = curl_̲exec($curl);
if(!curl_̲errno($curl)){
$response_̲header = curl_̲getinfo($curl);
}
curl_̲close($curl);
var_̲dump($result);
- 51. アップロード:レスポンス
50
<?xml version="1.0" encoding="utf-‐‑‒8" ?>
<Object>
<Name>test.jpg</Name>
<Sid>box-‐‑‒l-‐‑‒svq6zr7wylpytn3otktetn2gdq-‐‑‒1004</Sid>
<UniqId>0c703d7c-‐‑‒3e10-‐‑‒4af2-‐‑‒bccc-‐‑‒4539492a5c18</UniqId>アップロードされて発⾏行行された
UniqId
<Etag>"5ddf0bde1391418521237985"</Etag>
<ModifiedTime>2014-‐‑‒02-‐‑‒03T18:08:41+09:00</ModifiedTime>
<Path>/作成したいフォルダの名前/test.jpg</Path>
<Url>https://yoctfs.jp/res/box-‐‑‒l-‐‑‒svq6zr7wylpytn3otktetn2gdq-‐‑‒1004?
account=storage&expires=1391418642&uid=0c703d7c-‐‑‒3e10-‐‑‒4af2-‐‑‒
bccc-‐‑‒4539492a5c18&signature=NzY2ODkyM2MyNzc5YmQ1YWRmMmY1N2YxZWQ3NTh
kMWEyZDJmYjYyMg-‐‑‒-‐‑‒</Url>
</Object>
次:アップロードしたファイルを公開設定する
- 53. ファイル公開:リクエスト
52
・リクエスト:公開したいファイルのUniqIdを指定してリクエスト(PUT)
$sid = ʻ‘ユーザのSidʼ’;
$uid = ʻ‘公開したいファイルのUniqIdʼ’;
$url = 'https://ybox.yahooapis.jp/v1/file/public/'.$sid.'/'.$fuid;
$httpHeader = array(
'Host:ybox.yahooapis.jp',
'Authorization: Bearer ' . $access_̲token,
);
$curlSetoptArray = array(
CURLOPT_̲URL => $url,
CURLOPT_̲HTTPHEADER => $httpHeader,
CURLOPT_̲RETURNTRANSFER => true,
CURLOPT_̲VERBOSE => true,
CURLOPT_̲HEADER => true,
CURLOPT_̲PUT => true,
);
$ch = curl_̲init();
curl_̲setopt_̲array($ch, $curlSetoptArray);
curl_̲exec($ch);
$response_̲header = curl_̲getinfo($ch);
curl_̲close($ch);