Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';不要在FB.api方法中声明任何内容_Javascript_Jquery_Facebook_Api_Callback - Fatal编程技术网

Javascript Can';不要在FB.api方法中声明任何内容

Javascript Can';不要在FB.api方法中声明任何内容,javascript,jquery,facebook,api,callback,Javascript,Jquery,Facebook,Api,Callback,我正在玩facebook的javascript sdk,无法获取用户电子邮件地址以发送到服务器。代码如下: <script type="text/javascript"> function fbLogin(){ FB.login(function(response) { if (response.authResponse) { console.log('Welcome! Fetching your inform

我正在玩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(){
FB.登录(功能(响应){
if(response.authResponse){
log('欢迎!获取您的信息…);
$(“”)。附加到('body');
$(“”)。附加到(“#FBU凭据”);
$(“”)。附加到(“#FBU凭据”);
$(“”)。附加到(“#FBU凭据”);
$(“输入#用户ID”).attr({
名称:“用户[uid]”,
值:response.authResponse['userID']
});
$(“输入#用户_访问_令牌”).attr({
名称:“用户[访问令牌]”,
值:response.authResponse['accessToken']
});
FB.api('/me',函数(响应){
$(“输入用户电子邮件”).attr({
名称:“用户[电子邮件]”,
值:response.email
});
});
$('form#fb#u credentials')。提交();
}否则{
log('用户取消登录或未完全授权');
}
},{范围:'电子邮件,发布操作,脱机访问'});
}
注意:在
onClick
事件中调用
fbLogin
函数

我在这里尝试的是使用JSSDK获取用户id、访问令牌和电子邮件。 然后,我使用JQuery创建一个表单,并通过HTTPPOST方法发送信息


我可以获得除用户电子邮件地址以外的所有信息。我做错了什么?如何修复此问题?

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