基本
次の場所にアプリケーションを埋め込むことができます..
- Canvas-アプリケーションのある実際のページ。 apps.facebook.com/ PROGRAM TITLEで入手可能
- プロファイルボックス-ユーザープロファイル自体の中の小さなボックス
- [プロファイル]タブ-プロファイルの新しいタブ
- [ボックス]タブ-タブボックス内の小さなブロック
- ニュースフィード-更新ストリームへのアクセス
- リクエストボックス-他のユーザーへのインタラクティブなメッセージ
統合は混合機能によって行われます ..
- REST API(http://api.new.facebook.com/restserver.php)。バックエンドに「ハード」アクセスを提供し、写真、ビデオのアップロード、友達リストの受信、イベント、コメントなどの機能を提供します。
- FQL-メソッドのパラメーターだけでなく、すでにSQLに似た構文を介してRESTデータを要求する方法
- FBML-切り捨てられたHTML + Facebookが独自のスタイルとデザインでウィンドウで解釈し、インラインで表示されるときにキャッシュするタグ。 ビルトインタグバリデーターに関する多くのトラブル
- xFBML-アプリケーションで使用されるFBMLタグ
- FBJS-切り捨てられたJS
双方向
基本的な用語が明確になったので、Canvasでホストされているアプリケーション自体に移りましょう。 開発者アプリを使用して新しいアプリケーションを作成し、 PHP用のRESTライブラリをダウンロードし、Webサイトにアプリケーションを配置し、CanvasのURL設定にインストールすると、 iframe (+ XFBML)またはfacebookに保存される純粋なFBMLを介して起動する2つの方法があることがわかります。 もちろん、最初のオプションが最も簡単です。 プログラムを作成し、プロファイルに追加/確認した後、Canvasディスプレイには、fb_sig_canvas_userが最も重要な接頭辞fb_sig_を持つ通常のiframe + GETパラメーターが付随します。 2番目のオプションはより退屈ですが、FBにより密接に関連しています。
権利
ここで、アプリケーションが原則として何をするかについて考える必要があります。 私の場合、これはクイズテストです。ユーザーが質問に答えると、最後にプロファイルウォールにステータスが表示されます。
まず、データを受信するためのユーザー確認( Authorization )が非常に有用であることがわかります。これはメソッドによって呼び出されます
Facebook :: require_loginとユーザーにとってはウィンドウのように見える
権利の譲渡。 Wall(Newsフィード)にデータを公開するためのドキュメントで大騒ぎしたため、 Feed.publishTemplatizedActionメソッドがありますが、廃止されたことが判明しました。 別の方法はStream.publishで 、次に2番目の重要なトピックである拡張アクセス許可に 進みます。
権限がなければ、リクエストは致命的なエラーを受け取ります。 プログラムがプロファイルをより深くアクセスできるようにするため
ユーザー、後者はダイアログでこれを個別に確認する必要があります
ウィンドウ。 このダイアログを呼び出して、壁にメッセージを投稿したり、
ユーザーステータスの変更はそれほど簡単ではありません。
$facebook->api_client->stream_publish("My new status");
Uncaught exception 'FacebookRestClientException' with message 'The user hasn't authorized the application to perform this action' i
少し微妙になりました-ウィキとフォーラムのドキュメントは大いに疑って読んでください。
古いコードがあります(たとえば、代わりに特権の名前/メソッドstream_publish
publish_stream)。 特権をチェックするメソッドは、テストAPIコンソールを含む、パラメーターの致命的なエラーまたは理解できないサブスクリプションのいずれかを提供します
if($facebook->api_client->users_hasAppPermission("publish_stream")){
//
}
FBML誘惑
この時点で、FBMLモードの利点(同様のインターフェイスとサポートされているFBMLタグを強制する)が明らかになります。 それは私のために働いた
- FBMLモード+ onclick +タグ
<fb:prompt-permission perms="stream_publish">Heelp</fb:prompt-permission>
- FBMLモード+ <form promptpermission = "status_update"> + onclick
- iframe + www.facebook.com/authorize.php?api_key=へのリダイレクトMY_API_KEY&v = 1.0&ext_perm = publish_stream&next = http://google.com
非常にバグがあるように見えますが:
FBMLモード+リダイレクトで「ページの読み込み中にエラーが発生しました」というメッセージが表示された
xFBML
この方法でiframeを使用する権利にはバグがあることは明らかです。Facebookと別々の両方で一緒に暮らしたいです。 このために、Facebook javascriptによって解釈されるxFBMLタグがあります。 必要なアプリケーションで必要な合計:
- 接続javascript static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php
- xd_receiver.htmを作成します
- APIキーで初期化する
- FacebookのConnectアプリケーションの設定でルートへのパスを指定します
今、あなたは権利を求めることができます
FB.Connect.showPermissionDialog('publish_stream');
ロストクッキーロバ
ここでIE 6/7について言及せずに歩き回ることはできません。 実際、これらのブラウザーのiframeはデフォルトでセッション変数を失います。 簡単に言えば、iframeは「信頼できない」コンテンツと見なされ、ステータスバーに目が表示されるため、Cookieはサーバーに到達しません。 これを詳細に理解しているなら、プライバシーの好みのためにW3Cプラットフォームの形でこれの正当化があります 。 タイトルを追加する方が簡単です。
header('P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); //for IE6/7
最終的に、アプリケーションはプロファイルを正常に更新しました(添付ファイルを介して写真を押し込むことができました)
オリジナル