0

私は今朝ずっとこれと戦ってきました。

私は実際にカスタムのOpenGraphアクションを機能させようとしています。私はこれに成功し、あちこちの情報をつなぎ合わせました。これで、次のフローで「欲しい」アクションを投稿するボタンができました。

> User Clicks Button
> FB.api checks response.
    > if response code is 200 the user has not granted publish_stream permission
        > call FB.ui({ method:
                  "permissions.request",
                  "perms": 'email,publish_stream'
                }
        > call back to original function and post to stream
    > if user has already granted permission, then just publish

それはすべて素敵に動作します。

しかし、私が必要としているのは、ユーザーがFacebookにまったくログインしていないケースをキャッチすることです。

2500これは、アクセストークンが存在しない応答コードのようです

だから私はこのコードスニッペを持っています、それはそのケースをキャッチします

.....
} else if (((response.error.code) * 1) == 2500) {
    doLogin('publish_stream', postWant, itemId); 
    // post want being the original function and itemId being the item we are "wanting"
}

私のdoLogin関数は次のようになります。

    function doLogin(permRequired, callingFunction, urlAppend) {
        FB.ui({ 
            method: 'oauth', 
            scope: 'email,' + permRequired
        },
        function (response) {
            // DO THINGS NOW WE'RE LOGGED IN
        });
    };

これは基本的に、拡張権限を取得するための私の関数とまったく同じで、次のようになります。

    function getPermission(permRequired, callingFunction, urlAppend) {
        FB.ui({ method:
            "permissions.request",
            "perms": 'email,' + permRequired
        },
        function (response) {
            // DO THINGS NOW WE HAVE PERMISSION
        });
    };

この後者の例は機能しますが、ログインの例では、「申し訳ありませんが、問題が発生しました。しばらくしてからもう一度お試しください」というポップアップが読み込まれます。

明らかに、FB.initはすでに呼び出されており、APPは正しく設定されており、APP_IDはFB.initで宣言されているなど、他のものが機能していることは明らかです。

FBログインボタンからのFBログインは機能しますが、「摩擦のない」動作を機能させるには、このフローを実行するためにこれが必要です(つまり、別のボタンをクリックすることはできません)。

4

1 に答える 1

1

method: "permissions.request"でFB.uiを使用しないでください– FB.loginを使用し、必要な(追加の)権限の範囲でoptionsパラメーターを設定してください。

https://developers.facebook.com/docs/reference/javascript/FB.login/

于 2012-06-24T16:36:47.777 に答える