グラフAPIバージョン

jQueryを使ってFacebook SDK for Javascriptを組み込む

このチュートリアルでは、Facebook SDK for JavascriptをjQueryベースのウェブアプリに組み込む方法について学びます。jQueryとJavaScript SDKでは、ライブラリが読み込まれるまでの間、コードの実行を延期するそれぞれのソリューションがあります。このチュートリアルは、その2つを組み合わせて、SDKを呼び出す前にその両方を使用できるようにするものです。

この例では、GoogleのHosted Library CDNで提供されるjQuery 2.0.0を使用しています。jQueryについて詳しくは、jQueryのドキュメントをご覧ください。

実装

ドキュメントのヘッドにjQueryを追加し、$(document).ready()メソッドを実装します。このメソッドは、DOMが完了し、jQueryがインスタンス化されると実行されます。ページは次のようになります。

<html>
<head>
 <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
 <link rel="stylesheet" href="style.css" />
 <title>jQuery Example</title>
 <script>
 $(document).ready(function() {
 // Execute some code here
 });
 </script>
</head>

デフォルトの非同期スクリプトでFacebook JavaScript SDKをインポートするのではなく、jQueryのgetScript()メソッドを使って、利用者のロケールに合った正しいURLからSDKをインポートします。URLの先頭ではプロトコルを省略できます。これにより、現在のURLに合ったプロトコルが適用されます。

デフォルトでは、非同期リクエストがブラウザでキャッシュされないように、jQueryはリクエストにタイムスタンプを付与します。ajaxSetup()メソッドを使ってこの機能をオフにし、SDKがページ間でローカルにキャッシュされるようにすることもできます。

getScript()メソッドは非同期的であるため、匿名のコールバック関数を渡して、通常どおりSDK初期化コードを実行できます。アプリダッシュボードで、アプリのアプリIDを追加します。

$(document).ready(function() {
 $.ajaxSetup({ cache: true });
 $.getScript('https://connect.facebook.net/en_US/sdk.js', function(){
 FB.init({
 appId: '{your-app-id}',
 version: 'v2.7' // or v2.1, v2.2, v2.3, ...
 }); 
 $('#loginbutton,#feedbutton').removeAttr('disabled');
 FB.getLoginStatus(updateStatusCallback);
 });
});

依存関係の切り離し

SDKの呼び出しロジックをすべてgetScriptコールバックの中に置くと、FBオブジェクトが必ず存在するようになりますが、複雑なアプリの場合、これは優れた設計パターンとは言えません。FBオブジェクトはグローバルであるため、SDKロジックをgetScriptコールバックの外に置くことができます。ただし、この場合は呼び出す前に存在することを確認する必要があります。または、RequireJSのようなモジュールの依存関係のフレームワークを使って、FBオブジェクトが必ずアプリケーションセットアップの一部として読み込まれるようにします。

AltStyle によって変換されたページ (->オリジナル) /