Submit Search
Yahoo!ボックスAPI Hackathon向け資料
5 likes
4,252 views
Yahoo!デベロッパーネットワーク
1 of 55
Download now
Downloaded 17 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
More Related Content
What's hot
(17)
PDF
Django boodoo
泰 増田
PDF
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
Yuki Okamoto
PDF
Parse introduction
Tamura Koya
PDF
Jetpack datastore入門
furusin
PDF
Yapc -asia 2012 lt @studio3104
Satoshi Suzuki
PDF
WordPressと外部APIとの連携
Hidekazu Ishikawa
PDF
jQuery超入門編
Yasuhito Yabe
PDF
月間10億pvを支えるmongo db
Yuji Isobe
PPT
第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
Hiromu Shioya
PDF
もにかじ2 lt @studio3104
Satoshi Suzuki
ODP
PHP foreachでの参照渡しに潜む罠
Takaaki Hirano
PDF
G*workshop 2011/11/22 Geb+Betamax
Nobuhiro Sue
PDF
Tour of distributed systems 1 - ZooKeeper
Chris Birchall
PDF
知って得する標準関数の使い方
Soudai Sone
PPTX
CakePHP+Smartyハイブリッドによるラクラク開発
Shinzo SAITO
PDF
Paging Libraryの利用をやめたいお気持ち表明
furusin
PPTX
Tritonn から Elasticsearch への移行話
do_aki
Django boodoo
泰 増田
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
Yuki Okamoto
Parse introduction
Tamura Koya
Jetpack datastore入門
furusin
Yapc -asia 2012 lt @studio3104
Satoshi Suzuki
WordPressと外部APIとの連携
Hidekazu Ishikawa
jQuery超入門編
Yasuhito Yabe
月間10億pvを支えるmongo db
Yuji Isobe
第7回社内勉強会「Code Sucks - 人の振り見て我が振り直せ」
Hiromu Shioya
もにかじ2 lt @studio3104
Satoshi Suzuki
PHP foreachでの参照渡しに潜む罠
Takaaki Hirano
G*workshop 2011/11/22 Geb+Betamax
Nobuhiro Sue
Tour of distributed systems 1 - ZooKeeper
Chris Birchall
知って得する標準関数の使い方
Soudai Sone
CakePHP+Smartyハイブリッドによるラクラク開発
Shinzo SAITO
Paging Libraryの利用をやめたいお気持ち表明
furusin
Tritonn から Elasticsearch への移行話
do_aki
Similar to Yahoo!ボックスAPI Hackathon向け資料
(20)
PDF
Yahoo!ボックスAPI Hackday資料
Yahoo!デベロッパーネットワーク
PDF
ゼロからはじめるサーバーサイド Vol2
Taichi Inaba
PDF
WordPressAPI
Yuki Okamoto
PDF
俺が考えた最強のID連携デザインパターン
Masaru Kurahayashi
PDF
WordCamp Tokyo2016itkaasan
松田 千尋
PDF
サバフェス 2016 Yahoo! ID連携のご紹介 〜OpenID Connect入門〜
Masaru Kurahayashi
PDF
API提供におけるOAuthの役割 #apijp
Tatsuo Kudo
PDF
Google+APIをさわってみる。
Hiroyuki Nozaki
PDF
リソースフレームワークBEARのススメ(PHP勉強会#51)
stellaqua
PDF
WebAPIではじめるphp入門
Hiroaki Murayama
PDF
へろくしーの挫折
Yuichiro Ebihara
PDF
Rails と Rack と HTTP と通信の話
Progate, Inc.
PPTX
fluxflex meetup in Tokyo
Kyosuke Inoue
PDF
20140404 vyatta users Group / REST API解説
Yukihiro Kikuchi
PDF
OAuth 2.0 と ライブラリ
Kenji Otsuka
PDF
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
Masaru Kurahayashi
PPT
Php+Word Press
Hideo Kashioka
PDF
エコなWebサーバー
emasaka
PDF
Movable TypeのWebアプリケーションフレームワークの基本
Hajime Fujimoto
PDF
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
Taisuke Yamada
Yahoo!ボックスAPI Hackday資料
Yahoo!デベロッパーネットワーク
ゼロからはじめるサーバーサイド Vol2
Taichi Inaba
WordPressAPI
Yuki Okamoto
俺が考えた最強のID連携デザインパターン
Masaru Kurahayashi
WordCamp Tokyo2016itkaasan
松田 千尋
サバフェス 2016 Yahoo! ID連携のご紹介 〜OpenID Connect入門〜
Masaru Kurahayashi
API提供におけるOAuthの役割 #apijp
Tatsuo Kudo
Google+APIをさわってみる。
Hiroyuki Nozaki
リソースフレームワークBEARのススメ(PHP勉強会#51)
stellaqua
WebAPIではじめるphp入門
Hiroaki Murayama
へろくしーの挫折
Yuichiro Ebihara
Rails と Rack と HTTP と通信の話
Progate, Inc.
fluxflex meetup in Tokyo
Kyosuke Inoue
20140404 vyatta users Group / REST API解説
Yukihiro Kikuchi
OAuth 2.0 と ライブラリ
Kenji Otsuka
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
Masaru Kurahayashi
Php+Word Press
Hideo Kashioka
エコなWebサーバー
emasaka
Movable TypeのWebアプリケーションフレームワークの基本
Hajime Fujimoto
mod_auth_ticket - Bringing Single-Sign-On to lighttpd
Taisuke Yamada
More from Yahoo!デベロッパーネットワーク
(20)
PDF
ゼロから始める転移学習
Yahoo!デベロッパーネットワーク
PDF
継続的なモデルモニタリングを実現するKubernetes Operator
Yahoo!デベロッパーネットワーク
PDF
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
Yahoo!デベロッパーネットワーク
PDF
オンプレML基盤on Kubernetes パネルディスカッション
Yahoo!デベロッパーネットワーク
PDF
LakeTahoe
Yahoo!デベロッパーネットワーク
PDF
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
Yahoo!デベロッパーネットワーク
PDF
Persistent-memory-native Database High-availability Feature
Yahoo!デベロッパーネットワーク
PDF
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
Yahoo!デベロッパーネットワーク
PDF
eコマースと実店舗の相互利益を目指したデザイン #yjtc
Yahoo!デベロッパーネットワーク
PDF
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo!デベロッパーネットワーク
PDF
ビッグデータから人々のムードを捉える #yjtc
Yahoo!デベロッパーネットワーク
PDF
サイエンス領域におけるMLOpsの取り組み #yjtc
Yahoo!デベロッパーネットワーク
PDF
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
Yahoo!デベロッパーネットワーク
PDF
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo!デベロッパーネットワーク
PDF
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
Yahoo!デベロッパーネットワーク
PDF
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
Yahoo!デベロッパーネットワーク
PDF
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
Yahoo!デベロッパーネットワーク
PDF
「新しいおうち探し」のためのAIアシスト検索 #yjtc
Yahoo!デベロッパーネットワーク
PDF
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
Yahoo!デベロッパーネットワーク
ゼロから始める転移学習
Yahoo!デベロッパーネットワーク
継続的なモデルモニタリングを実現するKubernetes Operator
Yahoo!デベロッパーネットワーク
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
Yahoo!デベロッパーネットワーク
オンプレML基盤on Kubernetes パネルディスカッション
Yahoo!デベロッパーネットワーク
LakeTahoe
Yahoo!デベロッパーネットワーク
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
Yahoo!デベロッパーネットワーク
Persistent-memory-native Database High-availability Feature
Yahoo!デベロッパーネットワーク
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
Yahoo!デベロッパーネットワーク
eコマースと実店舗の相互利益を目指したデザイン #yjtc
Yahoo!デベロッパーネットワーク
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
Yahoo!デベロッパーネットワーク
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo!デベロッパーネットワーク
ビッグデータから人々のムードを捉える #yjtc
Yahoo!デベロッパーネットワーク
サイエンス領域におけるMLOpsの取り組み #yjtc
Yahoo!デベロッパーネットワーク
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
Yahoo!デベロッパーネットワーク
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo!デベロッパーネットワーク
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
Yahoo!デベロッパーネットワーク
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
Yahoo!デベロッパーネットワーク
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
Yahoo!デベロッパーネットワーク
「新しいおうち探し」のためのAIアシスト検索 #yjtc
Yahoo!デベロッパーネットワーク
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
Yahoo!デベロッパーネットワーク
Recently uploaded
(10)
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
PDF
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
Yahoo!ボックスAPI Hackathon向け資料
1.
Yahoo!ボックスAPI Hackday資料 Yahoo! JAPAN ヤフー株式会社 スマートデバイス戦略室 スマートデバイス開発本部 開発2部 瀬川 秀樹
2.
本日の内容 1.Yahoo!ボックス紹介 - サービス紹介
- デベロッパー様へご案内 2.付録:1.アプリケーションの開発はじめの一歩 - アプリケーションIdの取得から アクセストークン取得のフロー 3.付録:2.ボックスAPIを使ってみよう - サンプルコードによるボックスAPIの使い方解説 2
3.
Yahoo!ボックスサービス概要 Yahoo!ボックスとは 写真や文書など、あらゆるファイルをサーバ上に置 いて管理できるサービスです。置いてあるファイルは ネット全体に公開して共有することもできます。 3
4.
1000万人突破! ユーザ数 4
5.
堅牢性の高い設計で 何重にもデータをバックアップ 5
6.
国内サーバ+バックボーンの回線が同業他社に比べて 圧倒的 6
7.
そんなYahoo!ボックスがAPIを 公開 7
8.
APIを使えばオンライン上のファイルの アップロード、ダウンロード、 コピー、移動、削除、公開 などができます 8
9.
本日デベロッパーの皆さまに お伝えしたい事 9
10.
ボックスAPIを使って サービスを 作ってみませんか!? 10
11.
Yahoo! JAPAN ID所有者全てに リーチ出来るアプリを開発できる! 11
12.
デカイIDを持つプラットフォームが あるんだからそれに 乗っかっちゃってください 乗らない手はありません 12
13.
今回のテーマは 未来のテレビの楽しみ方 皆さんは何を作りますか? 13
14.
テレビの楽しみ方 必ずしも テレビ単体で楽しまれている訳ではない 実況 検索 テレビを中心としながら それに付随する情報で 盛り上がる 投稿&参照 ながらながら・・・ 14
15.
翌日学校や会社で話題になる時代から リアルタイムでLINEやTwitterでシェア される時代へ 例えばオリンピックの個人実況など・・・ スピードが上がっている 15
16.
Yahoo!ボックスAPIを 使っていただければ 16
17.
Twitterのつぶやきなどの テキストデータ 17
18.
写真や動画
19.
ドキュメント 19
20.
ファイルの公開・共有 20
21.
あらゆるデータを自由に保存・ 引き出すことができます 21
22.
端末のストレージ領域に縛られることなく オンライン上にあるファイルを使った 自由な発想 22
23.
! なサービス 23
24.
デベロッパーの皆さまにも ! なサービスを作ってほしい 24
25.
それでは楽しい開発を! ご静聴ありがとうございました 25
26.
ここからはサンプルコードを 含めたデベロッパー向け解説ページです 26
27.
アプリケーションの開発 はじめの⼀一歩 27
28.
アプリケーションIDの取得 アプリを開発するためにはアプリケーションIDが必要です。 Yahoo!デベロッパーネットワークで取得してください。 はじめて開発する方はこちら すでにアプリケーションIDを 持っている方はこちら 28
29.
認証を通して使用するAPIの決定 アプリケーションIDにスコープ(アプリが使用する機能) を設定します。 利用するスコープに 「ボックス参照・更新機能」を入れてください。 29
30.
アプリケーションIDの確認 アプリで使うので控えておきます 30
31.
アクセストークンの取得⽅方法 31
32.
YConnect YConnect OAuth2.0の仕様に準拠した認可機能 http://developer.yahoo.co.jp/yconnect/ アプリがWebAPIへアクセスするための 「アクセストークン」を取得するための認可フロー 32
33.
YConnectユーザ認可の取得(ユーザからの見え方) 認証コード このアプリがユーザーに対して Yahoo!の各リソースへアクセスする 許可を求める画面です。 33
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); 34
35.
トークン取得エンドポイントのレスポンスの例 string(1249) "{"access_̲token":"6GMsysoGhJvbEry5lYWU2ea3XsE7T4_̲xDq0tfAA1_̲AY5KiciO4QCCZEvrHUYUxySI43Vg4 rbdaQsdHrB0SmRDvjM.v4vBmWA8rmeX4qZzkqbt9BO9vZdoyfCYfDveBKN2ob8aatXQVECksRTH3WOQDFj CcmRwnlgWCq0vyn. 1qs2Lm4OABpvyJ60bNclYp4bYnLnfg_̲2CWlSasQMzZFNddtRjd5HawBfe9nKUUfUOrybyqdefOKqR8B8lyHXT 92X1OL8w9vmEbsEA2wmYHek3yzM93RuhpstpEANARSI_̲JYX.vZLDrYuugFoP8S.Nr6rilL. 8SNyAI5XnSJ8vnjKl5q8Y_̲ly9kLKxWW1q8ftj60v1uK.hHVn21iV8hVy.LXuX8LcHYhKr2OBB4PHfJBRGCvbPay rY3mmOL63C92Duo_̲Tnwqwymf6SQxWQu6O4KA8S0OgVJWFIsVaSxOtEcQwTJIc.RL1bvr6pQuysvEce5ZM PWZi.U_̲6XqTFNLval1.OnqKWYSe0RQHK8Cj05GmoWRe7X7pCzwG2_̲pr0RLwjhlDkem.QXBDVpTahiLPEYK C1O3s4rcuDVk4bPK4VaSX05EHnXHUn0oy5mjTZMaYULicpVw68K1nR5rpZ28VSR1BRiIPKcfCDdkTFx831p B8CAALH67sKFJqGnvSonj6xoSwHDUoltpdBusP.Tw6okLb9HcpHEPLLFIweQwHyrg_̲A7SC8E7_̲VVBsG_̲H7h DLjpq0Yo5gltrkE","token_̲type":"bearer","expires_̲in":"3600","refresh_̲token":"AJ5F3lI20AJ. 0kMFVZbABthjxGgNawjRERcbid5JFvhDdDsDovfP","id_̲token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.ey Jpc3MiOiJodHRwczpcL1wvYXV0aC5sb2dpbi55YWhvby5jby5qcCIsInVzZXJfaWQiOiJTVlE2WlI3V1lMUFlUTj NPVEtURVROMkdEUSIsImF1ZCI6ImRqMHphaVpwUFRacVNWSjVUVzgwTkhoTlZTWnpQV052Ym5OMWJX VnljMlZqY21WMEpuZzlOVFEtIiwiaWF0IjoxMzkwOTA0NTE3LCJleHAiOjEzOTMzMjM2ODQsIm5vbmNlIjoiYW FkZGVlZmYifQ.H0qnX_̲1PuxbmD4F_̲YLa1IA-‐‑‒GCNqw5byLiciSM9VXxwQ"}“ acess_̲tokenとrefresh_̲tokenは保存しておく。 access_̲tokenの有効時間は3600s その後はaccess_̲tokenが無効になるので、保存しておいたrefresh_̲tokenでaccess_̲tokenを更更新する。 refresh_̲tokenの期限切切れの場合はやり直して両⽅方を新規取得する。 35
36.
トークンを使用してユーザのGuidを取得する ・Guidとは Yahoo! JAPAN IDをサービスで使わない(表⽰示しない)ために Yahoo!
JAPAN IDに「⼀一対」になった代替ID (変わることはない) ・どうやって取るか YConnectで⽤用意されているUserInfoAPIへリクエストして取得する http://developer.yahoo.co.jp/yconnect/userinfo.html 36
37.
取得したトークンでUserInfoAPIへリクエスト ・リクエスト(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); 37
38.
UserInfoAPI:レスポンス ・レスポンス {“user_̲id”:“SVQ6ZR7WYLPYTN3OTKTETN2GDQ” Guid(user_̲id)が返ってきます。(後ほど使います) 38
39.
ボックスAPIを使ってみよう 39
40.
ボックスの仕様 Sid(StorageID) ユーザに紐づくストレージ上の領域ID UniqId 各ファイル・フォルダに振られる ユニークID Sid+UniqIdの組み合わせでストレージ上の オブジェクトを指定する 40
41.
ボックスの仕様:公開について 公開URL 見せたいファイルを 公開状態にする 41 公開URLから いつでも参照できる
42.
ボックスの仕様:公開のポイント ・継承公開 上位フォルダに公開設定をするとその配下全ての ファイル・フォルダも「継承公開」として公開状態になる仕様。 継承公開されているかどうかは 「PublicInherited」フラグで判断することができる。 ・コピー コピーすると、コピー先での予期せぬ公開を防ぐためコピー先 ファイル・フォルダの全ての公開情報がリセットされる。 ・移動 移動は公開状態が維持されたまま移動される。 Sid UniqIdは変わらない。 42
43.
ボックスの仕様:継承公開について 公開 継承公開 継承公開 継承公開 継承公開 公開 継承公開 継承公開 43
44.
ボックスAPIの使い方 サンプルコードを通してAPIの基本的な使い方を解説します。 フォルダ作成やアップロードなどの結果は実際にボックスを 確認しながら行ってみてください。 ユーザ情報取得 作成したフォルダ にアップロード フォルダ作成 44 アップロードした ファイルを公開する
45.
ボックスユーザ情報取得:リクエスト <?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); 45
46.
ボックスユーザ情報取得:レスポンス <?xml version="1.0" encoding="UTF-‐‑‒8"?> <User> <Guid>NG33XHXZ5GMCQBYUHODK5IFENQ</Guid> <isService>true</ServiceStatus> <isSuspend>false</ServicesSuspend> <QuotaOver>false</QuotaOver> <Sid>box-‐‑‒l-‐‑‒e7q4pp5kzdohdpe7vvheelgpce</Sid> (ユーザのSid) <RootUniqId>d9b6ed3f-‐‑‒3826-‐‑‒4f3b-‐‑‒a47f-‐‑‒5e09a73cbe69</RootIUniqId>(ユーザのルートデ ィレクトリ「/」(マイボックス)のUniqId) <Quota> <Max>53687091200</Max> 使⽤用できる容量量(Byte) <TotalUsed>2242518</TotalUsed> 現在使⽤用している容量量(Byte) </Quota> </User> 次:ルートディレクトリ「/」(マイボックス)のUniqIdが取得出来たので、ルートディレクトリにフォルダを作成する 46
47.
フォルダ作成:リクエスト $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); 47
48.
フォルダ作成:レスポンス <?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> 次:フォルダにファイルをアップロードする 48
49.
フォルダ作成されたか確認する ボックスWebを開いてフォルダが作成されたかどうか確認 49
50.
アップロード:リクエスト <?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); 50
51.
アップロード:レスポンス <?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> 次:アップロードしたファイルを公開設定する 51
52.
アップロードされたか確認する ボックスWebを開いてファイルがアップロードされたか確認 52
53.
ファイル公開:リクエスト ・リクエスト:公開したいファイルの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); 53
54.
公開されたか確認してみる ボックスWebを開いてファイルが公開状態になっているか確認 54
55.
参考資料 • Yahoo!デベロッパーネットワーク(YJDN) http://developer.yahoo.co.jp/ • ボックスAPI http://developer.yahoo.co.jp/webapi/box/ • YConnect http://developer.yahoo.co.jp/yconnect/ • Yahoo!ボックス http://info.box.yahoo.co.jp/index.html 写真素材:©株式会社データクラフト 55
Download