2012-04-06 11 views
0

私はJS-SDKを使用しています。ユーザーは既にFacebookのアプリケーションで許可されています。ユーザーのアクセス許可を付与する方法

私のオープングラフアクションが承認され、公開を開始しました。

私のユーザーは私のウェブサイトに入り、JS SDKは自動的にFB.getLoginStatusでログインステータスを取得し、ユーザーがFacebookにログインしている場合は何かを行います。

Facebookには、Facebookにアクションを公開するための "publish_actions"権限が必要です。だから、 "publish_actions"という値を持つログインボタンにattiributeスコープを追加し、それをクリックすると動作します。

しかし、問題があります:私はこの許可を今日までユーザーから得ていませんでした。したがって、ユーザーがJS SDKでこのアクセス許可を自動的に受け付けない場合、このアクセス許可を受け入れるためのウィンドウを開きたいと思っています。システムはこれをやっていないからです。

(もっと明確なアイデアのための)シナリオ:

1)ユーザーは、先週私のウェブサイトに来て、ログインボタンを承認しました。

2)私は自分のウェブサイトにOpen Graphを追加し、昨日私のログインボタンにattiributeを追加しました。

3)ユーザーがFacebookにログインしています。その後、今日私のウェブサイトに来ました。 JS SDKは自動的に「このウェブサイトに新しい権限があります」などのエラーを表示しませんでした。

このユーザーに新しい認証ダイアログを表示します。

+0

私の経験上、これは自動的に起こるはずです。これをテストするには、ユーザーアカウントの権限を取り消し、アプリにログインします。新しいアクセス許可を受け入れるよう求められます。 –

+0

@AlexRockwellは動作していますが、私のシナリオを読んでください。 – xecute

+0

あなたは何をしているのかのコードスニペットを投稿できますか? –

答えて

2

さて、ユーザーがページをロードしたら、あなたはpublish_actionsはちょうどそれを付与するために彼に尋ねる含まれていない場合、ユーザは、自分のアプリを許可されたアクセス許可のJS SDKで確認することができます。

あなたは、完全にクライアント側でこのような何かにそれを行うことができます。

FB.api("me/permissions", function(response) { 
    if (response && response.data && response.data.lengh == 1 && !("publish_actions" in response.data)) { 
     FB.login(function(response) { 
      console.log(response); 
     }, { scope: "publish_actions" }); 
    } 
}); 

をそれとも、それはあなた次第です、代わりにFB.loginを呼び出すの認証ダイアログにユーザーを送信することができます。 また、サーバー側でもクライアント側でも同様の方法でアクセス許可を確認できます。

+0

このコードをブロックするポップアップブロッカー:/ so、私のウェブサイトにボタンを追加しました。「もっと良い経験を望むならここをクリックして許可してください」:/ – xecute

+1

もちろん、[FB.loging] (http://developers.facebook.com/docs/reference/javascript/FB.login/)ドキュメント: "* FB.loginを呼び出すとJS SDKがポップアップウィンドウを開くようになります。ユーザーのクリックイベントの後に呼び出されます。そうでなければ、ポップアップウィンドウはほとんどのブラウザでブロックされます* "。コードはちょうど正しい方向にあなたにナッジを与えることでした。あなたの質問に答えるなら、答えを受け入れてください。 –

+0

私はリスナーを文書に追加しました。したがって、ユーザがこのパーミッションなしでどこかをクリックすると、fb.loginがトリガされます。問題が解決しました :) – xecute

関連する問題