电子邮件的facebook javascript权限对话框

时间:2011-10-20 08:00:54

标签: facebook-graph-api facebook facebook-javascript-sdk

我有一个问题....我实际上正在使用FB javascript SDK开发一个facebook应用程序。在我的申请中,我需要电子邮件许可才能进一步处我正在使用

FB.Connect.showPermissionDialog( “电子邮件”); 但有些对话框没有出现......这是我的代码

 <script>
    appid = '*************';
    name = 'Palmchip Test App';
    href = 'https://apps.facebook.com/*********/';
    FB.init({
    appId:appid, cookie:true,
    status:true, xfbml:true
    });
    FB.getLoginStatus(function(response) {
    if (response.session) {
    alert("You are logged in...");
    FB.Connect.showPermissionDialog("email", function(perms) {
           if (!perms) {
            alert("no access");
           } else {
               alert("accessed...");
           }
         });
    }
    else {
    top.location.href='https://graph.facebook.com/oauth/authorize?client_id='+appid+'&redirect_uri='+href+'&display=page';
    }
    });

</script>

警告说你已登录... 工作正常,但没有任何反应......

2 个答案:

答案 0 :(得分:0)

  1. 您需要升级到OAuth 2.0 ouath: true
  2. 您应该使用新的OAuth Dialog
  3. 升级后您应该知道FB.getLoginStatus()会返回不同的对象:response.authResponse

答案 1 :(得分:0)

试试此代码块

FB.init({appId: <?= APP_ID ?>, status: true, cookie: true, xfbml: true, oauth:true});

function getin(){
    FB.login(function(response) {
        if (response.authResponse) {
            var regurl = "/login";
            location.href=regurl;

        } else {
            var regurl = "/logout";
            window.location.href=regurl;
        }
    }, {scope:'email'});

}

因此,当您调用 getin()函数时,如果当前用户已经为您提供了电子邮件地址,那么他将不会为他执行任何操作,只需将其重定向到 / login url,但是如果用户是新用户,则他/她将看到一个弹出框,询问电子邮件地址,一旦他/她允许您可以使用图形或fql拉取电子邮件地址。 FB.login 中的BTW响应具有用户ID,access_toke和一些更有用的数据,因此请保存以供进一步使用。