2010-11-18 5 views
5

以前のFacebookのPermission Dialogを表示するために、古い残りのAPIを使用しました。 新しいグラフAPIを使って、私は何ができますか? (私はIFrame Appsに入っています)。新しいグラフAPIを使用してFBで拡張権限ダイアログを表示するにはどうすればよいですか?

私は私が別のウィンドウで許可をカンニングして、ポップアップできることを知っている:そのような

FB.login(function(response) { 
        if (response.session) { 
        if (response.perms) { 
         // user is logged in and granted some permissions. 
         // perms is a comma separated list of granted permissions 
        } else { 
         // user is logged in, but did not grant any permissions 
        } 
        } else { 
        // user is not logged in 
        } 
       }, {perms:'offline_access'}); 

..私は人々がさまざまなボタンとトリガーをクリックしましょう(再びFB.loginを呼び出します拡張permisisonダイアログ)

しかし、それは醜いと見え、それはダイアログのようには見えません。

ダイアログを生成する方法はありますか?私はFB.uiが助けることができるかどうかを調べようとしますが、それに関する情報はほとんどありません。

さらに、私は '応答'コールバックはこれまで実行されていないと思います。 「許可しない」または「許可する」をクリックしても、コールバックは発生しません。何か案が?

hihihさんがお手伝いできますか?

答えて

21

最後に。別のWebサイトから解決策を見つけてください。最初に 。 FB.initの後(...);その後

FB.provide("UIServer.Methods", 
    { 'permissions.request' : { size : {width: 575, height: 300}, 
    url: 'connect/uiserver.php', 
    transform : FB.UIServer.genericTransform } 
    }); 

、あなたはPERMSSIONダイアログを呼び出すために必要があるとき、それを行う:それを行う

FB.ui({method: "permissions.request", "perms": 'email,offline_access'}, 
    callBack); 

はそれがあるFBのオブジェクトを見ることで把握して見つけることがあまりにも長い間かかりましたpermissions.requestを指定してUIServerを実行すると、私は検索を続けてこの解決策を見つけます。 FB.uiは何も話しません.FB.provideは文書化されていません。感謝のfacebook。

+1

ありがとうございました! Facebookは新しいAPIのより良い文書を必死に必要としている。 – Nixarn

+0

この記事の執筆時点では、上記のようなFB.provide()+ FB.ui()は何もしません。これは、文書化されていない機能を利用するので驚くことではありません。 – ObscureRobot

+0

Facebookの多くの機能は文書化されていません。あなたのために神に感謝します。 – Frans

3

javascriptやSDKを使用する必要はありませんが、簡単にできます。あなたは、このようなURLにユーザーをリダイレクトするためにだけ必要があります。

https://graph.facebook.com/oauth/authorize? 
    client_id=...& 
    redirect_uri=http://www.example.com/callback& 
    scope=user_photos,user_videos,publish_stream 

あなたは常にトップウィンドウのいずれかのJavaScriptやリンクを持つにユーザーをリダイレクトする必要があります。

window.top.location = <login_url> or <a href=<login_url> target="_top">Login</a> 

あなたはPHP SDKまたはC#SDKを使用している場合は、SDKはあなたのためのURLを生成する可能性があり、そのプロセスは同じです。

また、redirect_uriがiFrameアプリケーションのURLと同じドメインに存在する必要はありません。これにより、FacebookはあなたのユーザーをFacebook外にあなたのウェブサイトにリダイレクトさせます。その場合、ユーザーをFacebookの内部のアプリにリダイレクトする必要があります。たとえば:

  1. ユーザーのクリックは
  2. ユーザーがクリックする
  3. Facebookはhttp://apps.facebook.com/myapp/loggedin
にアプリがユーザーをリダイレクト http://www.example.com/callback
  • にユーザーをリダイレクトできるよう
  • ユーザーがFacebookのログインページに行くログイン
  • +0

    私はリンクとPHPについて知っています。私の必要条件は、JSを使用して、FBMLダイアログと同じに見えるようにすることです。返信thoをありがとう。 :) – murvinlai

    +1

    Facebookキャンバスアプリを使用しているとリダイレクトも機能しません。 –

    1

    答えの1つは、FB.provide()に電話をかけてからFB.ui()に電話をかけて、拡張アクセス許可のダイアログを開くというハックを示唆しています。その解決策は私のためには機能しませんが、今は文書化された解決策があります。 Just call FB.login()必要な権限を取得します。

    FB.login(function(response){ 
        if (response.authResponse) { 
         alert('success!'); 
        } else { 
         alert('fail!'); 
        } 
        },{scope: 'email'}); 
    

    ask for extended permissions with the login buttonでも可能です。

    関連する問題