如何使登录使用facebook手动触发
How to make Login using facebook to trigger manually
这是使用 facebook 的登录。我拿了官方文档的例子。
此处,每当加载页面时,都会自动检查 facebook 登录。但我只想在单击按钮时检查它。
所以,我创建了一个 ID 为
的 div
并且有这个
<div id="fblogin">click me</div>
触发
$("#fblogin").click(function()
{
console.log('fb initiated');
statusChangeCallback(response);
});
因为我不知道要调用的 response
的值,我收到错误 Uncaught ReferenceError: response is not defined
简短:我只想在我不自动单击按钮时触发所有内容。
这是我目前的代码
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js">
</script>
<div id="fblogin">
click me</div>
<script>
$("#fblogin").click(function()
{
console.log('fb initiated');
statusChangeCallback(response);
});
</script>
<script>
function statusChangeCallback(response) {
console.log('statusChangeCallback');
console.log(response);
if (response.status === 'connected') {
testAPI();
} else if (response.status === 'not_authorized') {
document.getElementById('status').innerHTML = 'Please log ' +
'into this app.';
} else {
document.getElementById('status').innerHTML = 'Please log ' +
'into Facebook.';
}
}
function checkLoginState() {
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
}
window.fbAsyncInit = function() {
FB.init({
appId : 'myappid',
cookie : true,
xfbml : true,
version : 'v2.2'
});
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
};
(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 testAPI() {
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response) {
console.log('Successful login for: ' + response.name);
document.getElementById('status').innerHTML =
'Thanks for logging in, ' + response.name + '!';
});
}
</script>
<fb:login-button scope="public_profile,email" onlogin="checkLoginState();">
</fb:login-button>
<div id="status">
</div>
我做错了什么,我该如何解决?
Remove/Comment window.fbAsyncInit
中对 FB.getLoginStatus()
的调用。然后将按钮的单击事件处理程序代码更改为:
$("#fblogin").click(function()
{
console.log('fb initiated');
checkLoginState();
});
response
是传递给 FB.getLoginStatus
的回调函数的东西,它请求并 returns 在响应中返回用户的登录状态。
这是使用 facebook 的登录。我拿了官方文档的例子。
此处,每当加载页面时,都会自动检查 facebook 登录。但我只想在单击按钮时检查它。
所以,我创建了一个 ID 为
的 div并且有这个
<div id="fblogin">click me</div>
触发
$("#fblogin").click(function()
{
console.log('fb initiated');
statusChangeCallback(response);
});
因为我不知道要调用的 response
的值,我收到错误 Uncaught ReferenceError: response is not defined
简短:我只想在我不自动单击按钮时触发所有内容。
这是我目前的代码
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js">
</script>
<div id="fblogin">
click me</div>
<script>
$("#fblogin").click(function()
{
console.log('fb initiated');
statusChangeCallback(response);
});
</script>
<script>
function statusChangeCallback(response) {
console.log('statusChangeCallback');
console.log(response);
if (response.status === 'connected') {
testAPI();
} else if (response.status === 'not_authorized') {
document.getElementById('status').innerHTML = 'Please log ' +
'into this app.';
} else {
document.getElementById('status').innerHTML = 'Please log ' +
'into Facebook.';
}
}
function checkLoginState() {
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
}
window.fbAsyncInit = function() {
FB.init({
appId : 'myappid',
cookie : true,
xfbml : true,
version : 'v2.2'
});
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
};
(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 testAPI() {
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response) {
console.log('Successful login for: ' + response.name);
document.getElementById('status').innerHTML =
'Thanks for logging in, ' + response.name + '!';
});
}
</script>
<fb:login-button scope="public_profile,email" onlogin="checkLoginState();">
</fb:login-button>
<div id="status">
</div>
我做错了什么,我该如何解决?
Remove/Comment window.fbAsyncInit
中对 FB.getLoginStatus()
的调用。然后将按钮的单击事件处理程序代码更改为:
$("#fblogin").click(function()
{
console.log('fb initiated');
checkLoginState();
});
response
是传递给 FB.getLoginStatus
的回调函数的东西,它请求并 returns 在响应中返回用户的登录状态。