通过 Facebook 登录后检索名字和姓氏

spe*_*ees 5 php forms facebook

我设法通过 facebook api 登录(我认为)。这是我的代码:

\n\n
<script>\n  window.fbAsyncInit = function() {\n    FB.init({\n      appId            : \'134824563795810\',\n      autoLogAppEvents : true,\n      xfbml            : true,\n      version          : \'v2.10\'\n    });\n    FB.AppEvents.logPageView();\n  };\n\n  (function(d, s, id){\n     var js, fjs = d.getElementsByTagName(s)[0];\n     if (d.getElementById(id)) {return;}\n     js = d.createElement(s); js.id = id;\n     js.src = "//connect.facebook.net/en_US/sdk.js";\n     fjs.parentNode.insertBefore(js, fjs);\n   }(document, \'script\', \'facebook-jssdk\'));\n\n   function myFacebookLogin() {\n    FB.login(function(){}, {scope: \'publish_actions\'});\n    }\n\n</script>\n
Run Code Online (Sandbox Code Playgroud)\n\n

和简单的按钮只是为了测试这是否有效:

\n\n
<button onclick="myFacebookLogin()">Kontynuuj przez facebook</button>\n
Run Code Online (Sandbox Code Playgroud)\n\n

单击它后,我收到此弹出窗口:

\n\n

在此输入图像描述

\n\n

我单击“确定”,我认为我已登录。再次单击会生成小的弹出窗口,该窗口很快就会消失。我说我认为我已经登录,因为我没有在我的网站上使用任何授权。我不需要它。

\n\n

我的问题是:如果我已登录,如何获取用户的名字和姓氏并将这些值放入括号输入中?

\n\n

在此输入图像描述

\n\n

我想让脚本只将值放入输入中。喜欢:

\n\n
    \n
  • Imi\xc4\x99->first name
  • \n
  • Nazwisko->last name
  • \n
\n\n

有什么建议么?

\n\n

编辑:

\n\n

我终于想出了这段代码:

\n\n
<script>\nfunction getUserData() {\n        FB.api(\'/me?fields=first_name,last_name,email,location\', function(response) {\n                var imie = document.getElementById(\'basketInputName\');\n                if(!imie || !imie.value)\n                    imie.value = response.first_name;\n                var nazwisko = document.getElementById(\'basketInputLastName\');\n                    if(!nazwisko || !nazwisko.value)\n                        nazwisko.value = response.last_name;\n                var email = document.getElementById(\'basketInputMail\');\n                    if(!email || !email.value)\n                        email.value = response.email;\n                var location = document.getElementById(\'cityToHidden\');\n                    if(!location || !location.value)\n                        location.value = response.location.name;\n        });\n}\n  window.fbAsyncInit = function() {\n\n\nFB.init({\n  appId            : \'134824563795810\',\n  autoLogAppEvents : true,\n  xfbml            : true,\n  version          : \'v2.10\'\n});\nFB.getLoginStatus(function(response) {\n        if (response.status === \'connected\') {\n                //user is authorized\n                document.getElementById(\'loginBtn\').style.display = \'none\';\n                getUserData();\n        } else {\n                //user is not authorized\n        }\n});\n  };\n\n  (function(d, s, id){\n var js, fjs = d.getElementsByTagName(s)[0];\n if (d.getElementById(id)) {return;}\n js = d.createElement(s); js.id = id;\n js.src = "//connect.facebook.net/en_US/sdk.js";\n fjs.parentNode.insertBefore(js, fjs);\n   }(document, \'script\', \'facebook-jssdk\'));\n\n   function myFacebookLogin() {\nFB.login(function(){\n    getUserData();\n}, {scope: \'user_location\'});\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

\n\n

但它没有按照我想要的方式工作。当我单击loggin按钮时,没有任何反应,但是当我刷新页面并检查存储桶时,我看到了firstNamelastName并且email位于输入中。我不知道如何通过单击动态填充输入login按钮而不刷新页面来动态填充输入。\n有人可以帮忙吗?

\n

Vip*_* L. 0

使用 user_about_me 和 public_profile 范围

function myFacebookLogin() {
    FB.login(function(){}, {scope: 'publish_actions,user_about_me,public_profile'});
}
Run Code Online (Sandbox Code Playgroud)