4

ここで概説したのと同じ問題があります。iframeキャンバスアプリのFacebookOAuthログインでは、ログインする代わりにロゴ画像とGo to Facebook.comキャプションが表示されます。承認された回答に記載されている回避策を使用して、ユーザーを正しく確認することができました。アプリケーションを初めて使用するときは、権限ボックスを参照してください。

ただし、私の問題は、アプリの最初の「インストール」後のこの形式のリダイレクトは、ユーザーにとって非常に混乱を招くことです。リダイレクトされる前に、Facebookサイトから目に見えて削除されます。それは本当にユーザーエクスペリエンスを壊します。使用しているCodeIgniterライブラリ(http://www.haughin.com/code/facebook/)で提供されている標準のログイン方法を使用すると、アプリのログイン/読み込みはシームレスになりますが、前述の問題が発生しますアプリケーションの最初の使用。

ユーザーがアプリをインストールしているかどうかを検出して、アプリの「インストール」以外のすべてのインスタンスにメインのログイン方法を使用できるようにする方法はありますか?

4

1 に答える 1

2

iframeキャンバスアプリでは、ユーザーがすでにアプリを承認している場合、signed_requestにはuser_idとoauth_tokenが含まれるため、ユーザーを「承認」ページにリダイレクトする必要はありません。signed_requestに含まれる可能性のあるものの例をいくつか示します。

ユーザーがアプリを承認していません:

signed_request = 
                {
                    "algorithm":"HMAC-SHA256",
                    "issued_at":1299083443,
                    "user":{"country":"ca","locale":"en_US","age":{"min":21}
                }

ユーザーはすでにアプリを承認しています:

signed_request =   {
                    "algorithm":"HMAC-SHA256",
                    "expires":1299092400,
                    "issued_at":1299085507,
                    "oauth_token":access_token,
                    "user":{"country":"ca","locale":"en_US","age":{"min":21}},
                    "user_id":user_id
                }

user_idとoauth_tokenが表示されない場合は、JavaScriptのwindow.top.location.hrefテクニックを使用できます。user_idとoauth_tokenが表示されている場合は、ユーザーにアプリの認証を依頼する必要はありません。ユーザーはすでに認証を行っているからです。つまり、ユーザーが1月1日にアプリを承認し、1月10日に戻ってきた場合、signed_requestには1月10日の訪問時にuser_idとoauth_tokenが既に含まれています。

これが私が使っているテクニックです。これがお役に立てば幸いです。

以下のBrynJのコメントに応えて、2011年3月7日に更新されました。

signed_requestを取得するには、アプリケーション設定で「OAuth 2.0 forCanvas」が有効になっていることを確認する必要があります(これは、http://www.facebook.comで設定を編集するときに[詳細設定]タブにあります)。 /developers/apps.php)。これはすべての新しいアプリでデフォルトで有効になっていますが、古いアプリがある場合は、自分で有効にする必要があります。また、同じ[詳細設定]タブの[キャンバスにPOST]設定に注意してください。これが有効になっている場合、signed_requestはPOST本文で渡されます(例:signed_request = 12345)。無効になっている場合、signed_requestはクエリ文字列で渡されます。

signed_requestを取得したら、それを検証してデコードし、user_idとoauth_tokenを取得する必要があります。Facebookはここに本当に良い例があります:

http://developers.facebook.com/docs/authentication/signed_request/

ところで、Facebookは3月12日にすべてのiframeアプリをこれに切り替えるため、「POSTforCanvas」を有効にすることをお勧めします。詳細はこちら:http ://developers.facebook.com/docs/canvas/post/

于 2011-03-07T07:50:04.853 に答える