我设法通过facebook api登录(我认为)。这是我的代码:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '134824563795810',
autoLogAppEvents : true,
xfbml : true,
version : 'v2.10'
});
FB.AppEvents.logPageView();
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
function myFacebookLogin() {
FB.login(function(){}, {scope: 'publish_actions'});
}
</script>
简单的按钮只是为了测试它是否有效:
<button onclick="myFacebookLogin()">Kontynuuj przez facebook</button>
点击后我会收到这个弹出窗口:
我单击确定,我认为我已登录。再次单击会生成小弹出窗口,这会快速消失。我说我认为我已登录,因为我没有在我的网站上使用任何授权。我不需要它。
我的问题是:如果我已登录,如何获取用户的姓名并将此值放入我的括号输入中?
我想让脚本只将值放入输入中。像:
Imię
- &gt; first name
Nazwisko
- &gt; last name
有什么建议吗?
修改
我终于想出了这段代码:
<script>
function getUserData() {
FB.api('/me?fields=first_name,last_name,email,location', function(response) {
var imie = document.getElementById('basketInputName');
if(!imie || !imie.value)
imie.value = response.first_name;
var nazwisko = document.getElementById('basketInputLastName');
if(!nazwisko || !nazwisko.value)
nazwisko.value = response.last_name;
var email = document.getElementById('basketInputMail');
if(!email || !email.value)
email.value = response.email;
var location = document.getElementById('cityToHidden');
if(!location || !location.value)
location.value = response.location.name;
});
}
window.fbAsyncInit = function() {
FB.init({
appId : '134824563795810',
autoLogAppEvents : true,
xfbml : true,
version : 'v2.10'
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
//user is authorized
document.getElementById('loginBtn').style.display = 'none';
getUserData();
} else {
//user is not authorized
}
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
function myFacebookLogin() {
FB.login(function(){
getUserData();
}, {scope: 'user_location'});
}
但这不符合我的意愿。当我点击loggin
按钮时没有任何反应,但是当我刷新页面并检查存储桶时,我看到firstName
,lastName
和email
都在输入中。而且我不知道如何通过点击login
按钮而不刷新页面来动态填充输入。
有人可以帮忙吗?
答案 0 :(得分:3)
使用public_profile范围
function myFacebookLogin() {
FB.login(function(){}, {scope: 'publish_actions,public_profile'});
}
在公开个人资料中,您获得first_name和last_name
请参阅此处details
答案 1 :(得分:0)
使用user_about_me&amp; public_profile范围
function myFacebookLogin() {
FB.login(function(){}, {scope: 'publish_actions,user_about_me,public_profile'});
}