0

我快要放弃了。大约一个星期以来,我正在尝试最简单的事情,即通过 facebook 进行身份验证。每次我进行身份验证(通过 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'));

求救。

编辑:发布:

$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;
4

1 回答 1

1

继续之前从用户 ifaour 引用的 NullPointer:

只需检查当前的 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);
}

我写了一篇关于如何将图片上传到用户墙上的教程。

有了附加信息,这有帮助吗?我发现了与此相关的其他信息,说明尝试

$facebook->getAccessToken();

显然,该调用可以提供应用访问令牌或用户访问令牌。根据您尝试使用访问令牌执行的操作,您将需要适当的类型。

或者,您可能需要为您尝试执行的操作请求某些权限,您可以在此处找到。

于 2012-10-14T07:11:36.477 回答