2011-02-08 10 views
21

私は、ほとんどのユーザーが一度だけ使用する有効なFacebookアプリを持っています。 Facebookのワークフローに先駆けて、ユーザーは自分の壁に書き込むかどうかを指示します。それに基づいて、publish_streamの許可を求めるかどうかを決めます。Facebook Apps:追加のアクセス許可

その後、ごく一部のユーザーが戻って再びアプリを使用します。以前は壁に書きたくなかった(そして、私はpublish_streamを求めていませんでした)人々のいくつかは、今では壁に書きたいと思っています。

ユーザーが既にアプリを承認した後、追加の許可をリクエストするにはどうすればよいですか?

同様に、既に許可されているアクセス許可を一覧表示するようにユーザーに問い合わせるにはどうすればよいですか。

答えて

19

それは新しいfb:login-buttonに新しい権限を追加するのと同じくらい簡単です:

<fb:login-button scope="publish_stream"> 
    Let me write on your wall! 
</fb:login-button> 

したがって、たとえば、あなたは上記のDIVに隠されたとしているユーザーは、あなたがDIVを表示するチェックボックスをチェックして、新しい入力を求められた場合許可!

この良いライブ例はFacebook Test Consoleである:アプリケーション

  • を "追加" する

    1. クリックして、ログイン後does-like
    を選択fb.apiの下examples
  • をクリックしてください

    これで、アプリケーションに接続してもイオン(テストコンソールアプリ)、実際に別のログインボタンが表示されます。

    EDIT:
    ユーザーはちょうどこのFQLを使用し、許可をあなたのアプリケーションを付与しているかどうかを確認するには、次の

    SELECT read_stream,offline_access FROM permissions WHERE uid=me() 
    

    このようなものを返すでしょう:それをテストするには

    [ 
        { 
        "read_stream": 1, 
        "offline_access": 0 
        } 
    ] 
    

    を早く投稿したテストコンソールを使用してください。あなたが使用している場合

    https://www.facebook.com/dialog/oauth? 
        client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=publish_stream 
    

    または:

    EDIT 2:
    XFBMLやJavascriptをせずにリンクを自分で構築するために、あなただけの追加のパーマとscopeパラメータ(reference)を追加する必要がありますPHP-SDK

    $loginUrl = $facebook->getLoginUrl(array(
        "scope" => "publish_stream" 
    )); 
    
  • +1

    FBMLを使用してログインボタンを生成しています。 PHP SDKとoauth_redirectメソッドを使用するとどうなりますか?それは、追加のパーミッションを尊重しないところです。 –

    +0

    @ScottC:私の答えを更新しました。 – ifaour

    0

    先日、私はこれを見ていました! http://developers.facebook.com/docs/authenticationを読んだら、余分な権限を要求する小さなポップアップボックスを表示する方法がいくつかあります。

    これはFacebookアプリケーションでどのように動作するのかよく分かりませんが、Facebook Connectを使用しているWebサイトでは、ユーザーが既に承諾しているアクセス許可をリクエストしようとすると、そのページは自動的にredirect_urlにリダイレクトされますあなたが設定した。

    関連する問題