「WordPressで学ぶPHP(1)変数・制御構造編」が発売されました。
「WordPressで学ぶPHP」シリーズの第1巻で、WordPressを通してPHPを学んでいく本です。
この本では、PHPの基本となる変数と制御構造について解説します。
Kindle本で、定価500円です。
Facebookアプリ開発に挑戦(その5・Permissionsの取得)
Graph APIでFacebookからデータを取得する場合、「Permissions」が必要になることが多いです。
今回は、Permissionsについて解説します。
1.Permissionsについて
Graph APIを使うと、Facebookからユーザーのデータを得ることができます。
しかし、無制限にデータを得ることができてしまうと、プライバシー上問題が生じることがあります。
そこで、アプリケーションがユーザーに許可を求める際に、許可して欲しい操作をユーザーに提示し、許可を得る仕組みになっています。
これが、Permissionsの基本的な考え方です。
たとえば、ウォールの情報を読み取るアプリケーションを作る場合、アプリケーションの許可を求める際に、「read_stream」というPermissionsも許可してもらうように指定します。
すると、「アプリの許可」のダイアログボックスに、「ニュースフィードの投稿へのアクセス」の許可を求めるメッセージが表示されます。
なお、個々のAPIで必要なPermissionsは、それぞれのAPIの解説のページに記載されています。
また、Permissionsの一覧は、Facebook Developersのサイトの「Permissions」のページにあります。
2.Permissionsを得る
Permissionsを得るには、FB.login関数でユーザーに許可を求める際に、必要なPermissionsを指定します。
書き方は以下のようになります。
FB.login( function(response) { if (response.session) { ユーザーがアプリケーションを許可したときの処理 } else { ユーザーがアプリケーションを許可しなかったときの処理 } }, { perms : '必要なPermissions' } );
なお、複数のPermissionsが必要な場合は、「必要なPermissions」の部分に、それらのPermissionsをコンマで区切った文字列を指定します。
たとえば、フィードの読み込みだけでなく、投稿も許可してもらうことが必要だとします。
この場合は、「read_stream」のほかに、「publish_stream」というPermissionsも必要です。
そこで、上のリストの10行目を以下のように書きます。
{ perms : 'read_stream,publish_stream' }
3.Permissionsのチェック
アプリケーションに許可されているPermissionsは、FB.getLoginStatus関数で調べることができます。
この関数でを実行すると、コールバック関数が呼び出され、「response」というオブジェクトがパラメータとして渡されます。
そのオブジェクトの「perms」というプロパティに、Permissions等の情報を含んだJSONの文字列が代入されます。
JSONをオブジェクトに変換すると、その中に「extended」というプロパティがあり、許可されているPermissionsの配列が代入されます。
上記のことから、以下のようにFB.getLoginStatus関数を使って、アプリケーションが許可されているときだけ、必要な処理を行うことができます。
FB.getLoginStatus(function(response) { var perms_a = eval("(" + response.perms + ")"); var perms = {}; for (var i = 0, j = perms_a.extended.length; i < j; i++) { perms[perms_a.extended[i]] = true; } if (response.session && perms.必要なPermisson && ・・・) { ・ ・(アプリケーションが許可されているときの処理) ・ } }):
2~6行目は、JSONの文字列を変換した後、「perms.Permissions名」がtrueかどうかで、それぞれのPermissionsが許可されているかどうかを調べられるようにする処理です。
たとえば、「read_stream」のPermissionsが許可された場合、「perms.read_stream」の値がtrueになります。
7行目は、アプリケーションが許可されていて、なおかつ必要なPermissionsが得られているかどうかを判断する処理です。
許可されていれば、「アプリケーションが許可されているときの処理」の部分に処理が進みます。