Facebook PHP SDK:$Facebook->getUser()有时返回0
Facebook PHP SDK: $facebook->getUser() sometimes returning 0
这对我来说是一个非常令人沮丧的问题,因为我无法重新创建问题,而且我没有什么可测试的。出于某种原因,我的Facebook应用程序的随机用户的UID将返回为0。据我所知,这似乎不是一个特定的浏览器问题。
以下是我的应用程序的工作原理。我有一个主页,用户可以点击并立即输入链接。此按钮触发oauth();
JS函数,并应弹出打开OAuth登录窗口。请参阅下面的JS代码。。
window.fbAsyncInit = function() {
FB.init({
appId : 'xxxxxxxxxxxxx', // App ID
channelUrl : '//channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
FB.Canvas.scrollTo(0,0); //makes window scroll to top when loading page within iframe
FB.Canvas.setAutoGrow(); //resize the height of the iframe automatically
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
function oauth() {
FB.login(function(response) {
if (response.authResponse) {
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response) {
console.log('Good to see you, ' + response.name + '.');
//window.location.reload();
//alert("bing bong bing");
$.fancybox.open("#entry-form", {
width: 645,
minHeight: 920,
padding: 0,
scrolling: 'no',
wrapCSS: 'enternow-form',
type: 'iframe',
href: 'upload',
helpers : {
overlay : {
opacity: 0.95,
css : {
'background-color' : '#fff'
}
}
}
});
});
} else {
console.log('User cancelled login or did not fully authorize.');
}
});
}//end oauth function
如果oauth登录成功,我会打开一个有表单的FancyBox iframe。以下是iframe页面上的Facebook PHP代码,用于获取UID。。。
<?php header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); ?>
<?php session_start(); ?>
<?php require_once("../src/facebook.php"); ?>
<?php
$config = array();
$config["appId"] = 'xxxxxxxxxxxxxx';
$config["secret"] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$config["fileUpload"] = false; // optional
$facebook = new Facebook($config);
// get signed request to help determine if user is an admin
$signedRequest = $facebook->getSignedRequest();
// Get User ID
$user = $facebook->getUser();
// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
// Login or logout url will be needed depending on current user state.
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl();
}
?>
<?php echo $user //this is the user's ID ?>
在某些情况下,您很可能没有成功地对用户进行身份验证。有时用户会使用PHP SDK进行初始身份验证,但无法接收到访问令牌。在这种情况下,会抛出FacebookApiException
。
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
参考:如何使用Facebook PHP SDK 3.0正确处理会话和访问令牌?
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- JS验证ajax返回的html中的表单数据
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- AJAX:$_GET不返回任何值
- Auth$getUser返回null,即使用户已登录(AngularFire,Firebase)
- Facebook PHP SDK:$Facebook->getUser()有时返回0
- Facebook PHP SDK getUser() 在 Windows 上的 Safari 中返回 0