0

Facebook Oauth Documentationに記載されているように、デスクトップアプリケーションでクライアントサイドフローを使用するには、特別なreturn_uri https://www.facebook.com/connect/login_success.htmlが必要です。Chrome拡張機能:手動で取得したアクセストークンを含むFacebook OAuth?

期待

https://www.facebook.com/dialog/oauth?client_id=MYAPPID&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=token

作品としてURLにChromeから新しいタブを開くと、私はトークンを含むaccess_tokenパラメータでlogin_successページにリダイレクトしています。私は(jQueryを使って、例えば)、単純なGETリクエストを使用してグラフAPIからデータを要求することができます。

$.getJSON("https://graph.facebook.com/me", {access_token : token}, function (d) 
    { 
    .. process returned data 
    }); 

私の質問があり、私はSDKの内部認証方式を使用してずにJavascriptのSDK を継続して使用することができます。

FB.getLoginStatusは、Connect/Canvas URIが正しくないというエラーを返します。手動のGETとレスポンスのマッチング以外に、その方法なしでトークンの状態をチェックする方法を教えてください。

FB.loginは明らかに次のエラーで失敗します。内部的に上記のreturn_uriを指定する方法はないように思えるよう

API Error Code: 191

API Error Description: The specified URL is not owned by the application

Error Message: Invalid redirect_uri

、(URLは、アプリの設定でドメインのURLと一致していません)。

外部からトークンにアクセスしているときに、Javascript SDK(特にイベント)に依存する方法はありますか?アクセストークンを無効にする必要がありますか?

答えて

1

はい、あなたはそのように(つまり、誰かのようなボタンをクリックした)通常のイベントのためにそれを使用することができます:あなたはあなたの拡張内からFacebookのJS SDKを使用することはできません通常のAPI呼び出しのため残念ながら

<div id="fb-root"></div> 
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js#xfbml=1" id="facebook-jssdk"></script> 
<script type="text/javascript"> 
    FB.Event.subscribe('edge.create', 
     function(response) { 
      console.log(response); 
     } 
    ); 
</script> 

。そのために独自のAPIラッパーをロールバックする必要があります。

アクセストークンが有効かどうかを簡単に確認するには、保存したアクセストークンを使用して/ me?fields = idにグラフAPI呼び出しを行うことです。それは速くなり、応答を使用してアクセストークンがまだ有効かどうかを確認することができます。拡張機能のベストプラクティスは、アクセス許可offline_accessを要求することです。

また、自分が所有するドメインにリダイレクトURIを設定することをおすすめします。そうすることで、他の拡張機能が同じことをしている場合、スクリプトは干渉しません。トークンへのアクセスは同じになります。

+0

AFAIK Facebookは、すべてのaccess_tokensをかなり長期間使用できるようにする予定であるため、offline_accessを要求する必要はありません – zachallia

関連する問題