目前FB.getLoginStatus在Facebook更改新SDK和OAuth 2.0之后根本没有解雇。我们曾经在FB.getLoginStatus中获取响应并调用我们的回调函数,而后者又将用户重定向到我们的facebook应用程序。
请帮忙。
代码片段 -
FB.init({
appId: '<%=ConfigurationManager.AppSettings["APIKey"]%>', // App ID
//channelURL: 'xd_receiver.htm', // Channel File
status: true, // check login status
cookie: true, // enable cookies to allow the server to access the session
oauth: true // enable OAuth 2.0
//xfbml: true // parse XFBML
});
update_user_is_connected();
function update_user_is_connected()
{
FB.getLoginStatus(function(response)
{
callback();
});
}
function callback() {
var fbURL = "http://apps.facebook.com/" + '<%=Suffix%>' + "/MyPage.aspx";
eval("parent.location='" + fbURL + "'");
}
现在FB.getLoginStatus无效。
此致,KK
我有同样的问题并通过添加true
作为第二个参数来修复它:
FB.getLoginStatus(function(response) {
callback();
},
true);
这会禁用缓存并强制重新加载。见the docs
在尝试检查用户是否已在页面完成加载后已经使用Facebook登录时遇到此错误。
如果您正在尝试这样做,您需要等待facebook sdk完成加载,在FB.init()之后调用checkLoginState()
中的window.fbAsyncInit
方法。
这段代码非常适合我检查登录状态并请求登录并获取基于Java脚本SDK的oauth信息(名称,用户ID,令牌......)。
我有一些建议,您必须确保您的应用程序和频道文件应位于您在Facebook应用程序设置中设置的域中。
还要确保在代码中有div fb-root:
<div id="fb-root"></div>
如下图所示希望这可能会有所帮助......
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test Page</title>
<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'></script>
</head>
<body>
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId : 'xxxxxxxxxxxxx', // App ID
channelUrl : 'https://xxxxxxxxxxxxx/channel.html',
status : true,
cookie : true,
xfbml : true,
oauth : true
});
var token = "";
var userId = "";
FB.getLoginStatus(function(response) { // Get Login Status
if (response && response.authResponse) { // Check if User is Logged In
var token = response.authResponse.accessToken; // Get Token
var userId = response.authResponse.userID; // Get User ID
} else {
// alert("Not Auhtenticated");
FB.login(function(response) { // Promot User to Authenticate App
if (response && response.authResponse) {
var token = response.authResponse.accessToken;
var userId = response.authResponse.userID;
}
}, {scope: 'user_likes,friends_likes,publish_stream,read_friendlists,offline_access'}); // Scopes Example...
}
});
};
//Load asynchronously
(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_GB/all.js#xfbml=1&appId=xxxxxxxxxxx";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
</body>
我的问题在于window.fbAsyncInit
功能。
FB.init({
appId : '321677491886687',
cookie : true,
xfbml : true,
version : '3.2'
});
我需要将3.2
改为v3.2
卡迈勒
我相信你可以通过更换来解决你的问题
FB.getLoginStatus(function(response)
{
callback();
});
同
FB.Event.Subscribe('auth.login', callback());
问候
确保你的所有网址都是正确的,我在本地运行时遇到了同样的问题,但网站URL指向生产网站,一旦我更正了这一点,getLoginStatus就可以了。