我的应用程序管理员帐户在facebook我的应用程序正常工作,但与其他帐户我收到错误:Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user.
我之前遇到过这个问题与其他应用程序(在用户的墙上发布文本),但在我添加之后修复了
$user = $facebook->getUser();
这里有什么问题?我已添加offline_access
权限...如果可以,请帮助我,非常感谢。
<?php
require_once('images/Facebook.php');
$facebook = new Facebook(array(
'appId' => '456080124457246',
'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
));
$user_profile = $facebook->api('/me','GET');
$accessToken = $facebook->getAccessToken();
# Get User ID
$user = $facebook->getUser();
$facebook->setAccessToken($accessToken);
$facebook->api(456080124457246);
if ($user) {
try {
# Photo Caption
$photoCaption = $user_profile['name'] . ' patarimų plaukams sužinojo čia http://goo.gl/otwhf';
# Absolute Path to your image.
$imageUrl = 'http://padekime.wu.lt/plaukai/images/PlaukaiNeuzvedus.jpg'; // Example URL
# Post Data for Photos API
$post_data = array(
'message' => $photoCaption,
'url' => $imageUrl
);
$apiResponse = $facebook->api('/me/photos', 'POST', $post_data);
} catch (FacebookApiException $e) {
error_log($e);
}
} else {
$loginUrl = $facebook->getLoginUrl( array(
'scope' => 'publish_stream,photo_upload'
));
echo("<script>top.location.href = '" . $loginUrl . "';</script>");
}
?>
答案 0 :(得分:4)
在这种情况下,它甚至没有进入你的$ facebook-&gt; getUser()调用 - 它一到达此行就会抛出异常:
$user_profile = $facebook->api('/me','GET');
$ facebook-&gt; api()使用起来有点棘手,因为如果它不知道谁是“/我”就会立即引发异常......即使你以后尝试修复它也是如此
我认为,诀窍是将整个事物包装在try ... catch块中。像这样:
<?php
require_once('images/facebook.php');
$facebook = new Facebook(array(
'appId' => '456080124457246',
'secret' => 'xxxxx',
));
try {
$user_profile = $facebook->api('/me','GET');
# Get User ID
$user = $facebook->getUser();
if ($user) {
try {
# Photo Caption
$photoCaption = $user_profile['name'] . ' patarimų plaukams sužinojo čia http://goo.gl/otwhf';
# Absolute Path to your image.
$imageUrl = 'http://padekime.wu.lt/plaukai/images/PlaukaiNeuzvedus.jpg'; // Example URL
# Post Data for Photos API
$post_data = array(
'message' => $photoCaption,
'url' => $imageUrl
);
$apiResponse = $facebook->api('/me/photos', 'POST', $post_data);
} catch (FacebookApiException $e) {
error_log($e);
}
} else {
$loginUrl = $facebook->getLoginUrl( array(
'scope' => 'publish_stream,photo_upload'
));
echo("<script>top.location.href = '" . $loginUrl . "';</script>");
}
} catch (Exception $e) {
$loginUrl = $facebook->getLoginUrl( array(
'scope' => 'publish_stream,photo_upload'
));
echo("<script>top.location.href = '" . $loginUrl . "';</script>");
}
?>
这会立即将用户重定向到登录网址,然后将所有内容都拖回来。您不必使用此设置设置accessToken。
这实际上可能会不必要地重复某些功能,但希望这是开始时的事情。
顺便说一下,它的价值是the offline_access permission is being phased out.
答案 1 :(得分:1)
我停止使用“me”关键字来获取登录用户的个人资料。 而不是$ facebook-&gt; api('/ me','GET'),我改为$ facebook-&gt; api('/用户的脸书ID','GET');
这减少了第二次尝试捕获的需要
答案 2 :(得分:0)
如果你这样做
if(!empty($ user)){}
那应该有帮助...