1

サイトの Facebook Connect 統合を行っています。ユーザーがログインするときに、いくつかの権限を要求する必要があるため、FB.Connect.showPermissionDialog を使用します。そのコールバックを使用して、アクセス許可が付与されているかどうかを確認します。もし許可されたら、フォームを提出したいです。私のコードは次のようになります。

$("#form3").live("submit", function() {
 FB.Connect.showPermissionDialog('email, offline_access', function(perms) {
    if (!perms) {
     location.href="http://www.mysite.com/logout/";
  return false;
   } else {
   save_session();
   }
 });
});

問題は、ユーザーが許可ダイアログを見る前にフォームが送信されることです。誰もこれを見たことがありますか?

4

1 に答える 1

0

ごく最近、私は同じことをしました。ボタンをフォームの外に移動します。クリックしてもフォームが送信されないように移動します。次のコードを使用して拡張アクセス許可を要求し、フォームを送信します。

  1 var fb = {
  2   extendedPermissions: function () {
  3     $("#submit_button").click(function (event) {
  4       FB.Connect.showPermissionDialog("email,read_stream,publish_stream", function (perms) {
  6         if (!perms) {
  7           location.href="http://www.mysite.com/logout/";
  8         } else {
  9           $.post('/url_to_post_the_form', $('#form3').serialize(), function (data, textResponse) {
 10             window.location.replace(data.redirect);
 11           }, "json");
 12         }
 13       });
 14     });
 15   }
 16 };

4行目は、ボタンをクリックすると、許可ダイアログがユーザーに表示されるようにします。

7 行目 ユーザーが許可を与えない場合、ユーザーはログアウトにリダイレクトされます。

9行目それ以外の場合は、フォームのコンテンツを送信したい場所に投稿します。ユーザーが許可を与えたとき、およびフォームのコンテンツが正常に投稿されたときに、ユーザーが着陸する JSON 形式のリダイレクト URL が返されることを確認してください。

行 10 は、実際には、最後の AJAX ポスト リクエストで JSON として渡された URL にユーザーをリダイレクトします。

HTH

于 2010-03-20T12:07:16.790 に答える