Flash + Facebook : アルバムの共有範囲の設定について

スポンサーリンク

Adobe Developer Connection (通称ADC) に最近「Flash + Facebook」のページが日本語化されたので、記念にMUSHIKAGO MEMOを書いておきます。
実はこの情報はだいぶ昔からUSのADCにはあって、日本語訳もしっかりありました。
これを今度の2012/2/28のイベント「ADC MeetUp 04 Social Gaming」にあわせて整理した感じですね。

サンプルや事例がいろいろありますが、大事なのは「Adobe ActionScript 3 SDK for Facebook Platform」というswc。まずこれをゲットしときましょう。このswc、割りと頻繁にバージョンアップしています。

これの使い方は、このADCのサイトを見たり、サンプルを見ればそんなに難しくないです。
そして、これを利用したモバイルアプリが、何を隠そう我がアプリ「MUSHIKAGO CheerMeUp」なのです。

MUSHIKAGO CheerMeUp : Facebookの友達に支えられながら、自分のゴールを目指し、毎日がんばるための支援ツールです。何気なく過ごす日々の中で自分なりに頑張った事があったら気楽にこのアプリを使って投稿しましょう。 きっと些細な事であってもあなたの友達が「いいね!」って応援してくれます。

このアプリを事例としてぜひ試してみてください。
そう、モバイルAIRだし、このSDK for Facebook使ってるし、これこそADCで事例として紹介しておくれ、って感じですよね。

アルバムの共有範囲の設定について

MEMOとして書いておこうと思うのは、Facebook用に開発したアプリからアップロードした写真の共有範囲(公開範囲)の設定についてです。
写真の共有範囲は、その写真が入っているアルバムの共有範囲を設定してあげればいいです。この共有範囲は、アルバムを作るときに設定できます。(アルバムがすでに存在している場合、既存の設定をアプリ側から変える事はできませんでした。いや、できるのかもしれませんが、何度かトライしたのですがよくわかりませんでした。できないのではないかと思います。)

共有範囲の段階は、大きくわけて
自分のみ < 友達 < 公開 です。(カスタムとか友達の友達とかありますが記載を省きます。)

「このアプリのアクティビティの共有範囲」という設定について

そして重要な点が、”アプリの共有範囲の制限はユーザによって与えられている”ところです。アプリユーザに自分のFacebookアプリをインストールしてもらう際に、このような確認ダイアログが出ます。

この際に素通りされてしまいそうな「このアプリのアクティビティの共有範囲」というところがデフォルトで「友達」(人が二人並んでるアイコン)なのです。
ほとんどの人はこのままインストールするでしょう、変える理由がないので。
※追記:この認証ダイアログにてデフォルトの設定を「公開」にしておく方法がありました。記事下部の追記参照。

このように「友達」までの範囲でインストールされたアプリはどうなるかというと、「公開(”EVERYONE”)」の設定ができなくなるようです。スクリプトで範囲を「公開」にしても「友達」までの共有範囲のアルバムが作られます。この場合、設定可能なのは、「自分」と「友達」です。

もし、このアプリに対して「公開」までの共有範囲を与えてもらえたなら、アプリは「自分のみ」「友達」「公開」のいずれの共有範囲のアルバムも作れるようになります。

インストール後に、このアプリの共有範囲の設定を変える場合は、
「プライバシー設定」>「アプリとウェブサイト」>「利用しているアプリ」>「アプリのアクティビティのプライバシー」
で設定を変更できます。実際に実験してみると動作を確認できるでしょう。

アルバムを作成するスクリプト

プライバシー設定をしながらアルバムを作成するスクリプトはこんな感じです。

pObj = JSON.stringify({value:"SELF"});
values = {privacy:pObj, name:"アルバム名", message:"アルバムの説明"};
FacebookMobile.api('/me/albums', onAlbumCreated, values, 'POST');

※たしか AIR3からJSONが普通に使えるようになったためJSON.stringifyを使っていますが、その前のAIR2.7までは「pObj = {value:”SELF”}」だったと思います。

つまり、「このアプリのアクティビティの共有範囲」が「友達」というデフォルトの状態でインストールされる可能性が大なので、

pObj = JSON.stringify({value:"EVERYONE"}); //"EVERYONE"=「公開」

と書いても、作成されるアルバムとその中にアプロードされた写真の共有範囲は「友達」となってしまうわけです。

「デフォルト設定の管理」という設定について

ちなみに、「プライバシー設定」にある「デフォルト設定の管理」ですが、これはおそらく「privacy:pObj,」部分の記述を省いた場合に、どの設定になるかという設定です。

ただし、これも「アプリのアクティビティのプライバシー」が「友達」の場合、「デフォルト設定の管理」で「公開」を選んでも、そのアプリが公開できるアルバムの共有範囲は「友達」になると思われます。

— 追記 2012.02.26 —

自分の「ウォールの写真」(Wall Photos)というアルバムに対しては、上記画面の「デフォルト設定の管理」で「公開」を選んだ状態でアプリから写真をアップロードしたところ、「アプリのアクティビティのプライバシー」が「友達」であっても、「公開」の状態で写真がアップされました。
検証してませんが「携帯アップロード」(Mobile Uploads)も同様かもしれません。

デフォルト設定の管理
この設定は、iPhone用Facebookアプリなど、共有範囲の直接選択機能のないFacebookアプリからタイムラインに投稿された近況や投稿に適用されます。

とあるように、写真の共有範囲に関しては、この設定をユーザが選択することで「アプリのアクティビティのプライバシー」よりも優先して適用され、写真を「公開」にすることができるようです。ただし、これは「ウォールの写真」という特殊なアルバム内における個々の写真の共有範囲なので、新規にアルバムを作成する際のアルバムの共有範囲には適用できないようです。
(Facebookの公式アプリのようにアプリ側からこの選択をさせられるものかは現在研究中です。)

— さらに追記 2012.02.26 —

この認証ダイアログの「このアプリのアクティビティの共有範囲」の値を初期値として「公開(地球のアイコン)」にしておく方法がありました。

https://developers.facebook.com/apps
Facebook Developersのページ>アプリを編集>認証ダイアログ>デフォルトのアクティビティのプライバシー
にてデフォルトの設定を変更できました。ここで「公開」を選んでおくと、ユーザのダイアログの初期値が「公開」になります。もちろん、変更される可能性がありますが、デベロッパーができることは、この初期値を設定しておくことと、何故に「公開」の必要があるのか説明するまででしょう。

//gist-embed