【问题标题】:Can't declare anything inside FB.api method无法在 FB.api 方法中声明任何内容
【发布时间】:2012-01-03 14:17:04
【问题描述】:

我正在使用 facebook 的 javascript sdk,但无法将用户电子邮件地址发送到服务器。代码如下:

<script type="text/javascript">
    function fbLogin(){
        FB.login(function(response) {
           if (response.authResponse) {
             console.log('Welcome!  Fetching your information.... ');
             $("<form id='fb_credentials' action='/create_user_with_fb'  method='post'></form>").appendTo('body');
             $("<input id='user_uid' type='hidden' />").appendTo("#fb_credentials");
             $("<input id='user_access_token' type='hidden' />").appendTo("#fb_credentials");
             $("<input id='user_email' type='hidden' />").appendTo("#fb_credentials");

             $("input#user_uid").attr({
               name: 'user[uid]',
               value: response.authResponse['userID']
             });
             $("input#user_access_token").attr({
               name: 'user[access_token]',
               value: response.authResponse['accessToken']
             });

             FB.api('/me', function(response){
                $("input#user_email").attr({
                   name: 'user[email]',
                   value: response.email
                });
             });
            $('form#fb_credentials').submit();

           } else {
             console.log('User cancelled login or did not fully authorize.');
           }
         }, {scope: 'email, publish_actions, offline_access'});
    }
</script>

注意:fbLogin 函数是在 onClick 事件上调用的。

我在这里要做的是使用 JS SDK 获取用户 ID、access_token 和电子邮件。 然后我使用 JQuery 创建一个表单并通过 http post 方法发送信息。

我可以获得除用户电子邮件地址以外的所有信息。我究竟做错了什么?我该如何解决?

【问题讨论】:

    标签: javascript jquery facebook api callback


    【解决方案1】:

    您需要将 submit() 调用移至 FB.api 调用的回调函数定义内部,即将其上移一行,使其位于右大括号/括号之前。它现在的放置方式是在 FB.api 调用完成之前调用它,因此在返回电子邮件地址并将其分配给您的表单字段之前。请记住,FB.api 是一个异步调用,它在完成之前不会阻塞执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多