我即将放弃。大约一个星期我尝试了最简单的事情,通过Facebook进行身份验证。每次我authenticatiom(通过Facebook登录URL),getUser()和api(' me' )返回null。
为什么呢?
代码:
$facebook = new Facebook(array(
'appId' => '306597542762982',
'secret' => '88XXXXXX7f1',
));
$user = $facebook->getUser();
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;
}
}
if (!$user) {
$loginUrl = $facebook->getLoginUrl(array('scope'=>'user_actions.news,publish_stream,user_about_me,email,publish_actions'));
print $loginUrl; exit;
}
var_dump($facebook->api('me'));
SOS。
编辑:POST:
$params = array (
'article' => 'http://fb.raal.co.il/content/view/$id/$title',
'access_token' => $facebook->getAccessToken()
);
$out = $facebook->api( '/me/news.reads','post', $params);
var_dump($out); exit;
答案 0 :(得分:1)
继续NullPointer之前引用的用户ifaour:
只需检查当前Facebook用户ID $ user,如果它返回null,则需要重新授权用户(或使用自定义$ _SESSION用户ID值 - 不推荐)
require 'facebook/src/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'APP_ID',
'secret' => 'APP_SECRET',
));
$user = $facebook->getUser();
$photo_details = array('message' => 'my place');
$file='photos/my.jpg'; //Example image file
$photo_details['image'] = '@' . realpath($file);
if ($user) {
try {
// We have a valid FB session, so we can use 'me'
$upload_photo = $facebook->api('/me/photos', 'post', $photo_details);
} catch (FacebookApiException $e) {
error_log($e);
}
}
// login or logout url will be needed depending on current user state.
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
// redirect to Facebook login to get a fresh user access_token
$loginUrl = $facebook->getLoginUrl();
header('Location: ' . $loginUrl);
}
我写了一篇关于如何将图片上传到用户墙上的tutorial。
有了附加信息,这有帮助吗?我发现有与此相关的其他信息,说明要尝试
$facebook->getAccessToken();
显然,该调用可以提供应用访问令牌或用户访问令牌。根据您尝试使用访问令牌执行的操作,您将需要适当的类型。
或者,您可能需要为您要执行的操作请求某些权限,您可以找到here。