Facebook Connect:获得电子邮件权限后重定向到特殊URL

时间:2011-05-11 11:36:35

标签: php facebook

在我的应用程序中,我要求用户提供电子邮件许可:

<fb:login-button perms="email">Give me your email</fb:login-button>

弹出窗口打开,用户允许。

现在我想将用户重定向到一个特殊的链接/页面,我有一些代码可以从facebook获取电子邮件。怎么做?

这就是我所拥有的JS代码所以,它是登录:

FB.Event.subscribe('auth.login', function() {
    window.location.reload();
});

我尝试了“auth.sessionChange”和“auth.statusChange”事件,但它们也会在登录/ logut上触发。

我认为我需要的每个FB按钮都有自己的回调函数!?

THX

4 个答案:

答案 0 :(得分:0)

您需要使用Graph API来获取用户的电子邮件地址。有关Graph here

的更多信息

答案 1 :(得分:0)

好的,然后试试这个:

FB.login(function(result) {
  if(result.session) {
    location.href = '/login_successful.php'; // Or whatever
  }
},
{perms: 'email'});

答案 2 :(得分:0)

我亲爱的捕获登录事件并将用户重定向到你想要的地方


 
   window.fbAsyncInit = function() {
   FB.init({appId: "XXXXXX",
            status: true,
            cookie: true,
            xfbml: true});

    FB.getLoginStatus(function(response) {
      if (response.session) {
        //here you can redirect the user where do you want to redirect it
        self.location.href="http://www.yoursite.com/login.php";
      } else {

        }
    }); 
    FB.Event.subscribe("auth.login", function(response) {
    window.location.reload();
      });
FB.Event.subscribe("auth.logout", function(response) {
    // to logout

    self.location.href="http://www.yoursite.com/logout.php";
      });
     };
   (function() {
     var e = document.createElement("script");
     e.type = "text/javascript";
     e.src = document.location.protocol +
     "//connect.facebook.net/en_US/all.js";
     e.async = true;
     document.getElementById("fb-root").appendChild(e);
   }());
   

答案 3 :(得分:0)

这两个答案都很有用(对不起,由于声誉而无法投票 - 我是新用户), 但我这样解决了:

<script type="text/javascript">
                function chkmyperm() {
                jQuery.get("/user/chkmyperm", function(data){
                    if(data==1) {
                    window.location.reload();
                    }
                });
                }
            </script>

            <fb:login-button perms="email" onlogin="chkmyperm()">E-Mail Adresse freigeben</fb:login-button>

使用onlogin属性我回调一个自己的函数,如果用户给了我他的电子邮件权限,则检查(使用ajax调用,调用php-sdk API),如果是,我刷新页面。我这样做是因为这种行为应该仅仅是处理电子邮件权限而不是登录/注销等其他事件。