gpt4 book ai didi

函数中的 Facebook 身份验证 - getUser() 返回 0

转载 作者:行者123 更新时间:2023-11-30 05:24:10 24 4
gpt4 key购买 nike

我正在尝试在我的 Controller 中创建一个功能来将相册发布到 Facebook。每次访问该函数时,我都会被重定向到 REDIRECT_URI,就像 $userid=0 一样,即使我刚刚正确登录了 Facebook。是不是登录后重启了函数,新建了一个Facebook session,抹掉了我刚刚得到的用户?

感谢您提供的任何帮助。

 function share($id){
if (!$id) { $this->Session->setFlash(__('Invalid id for Album', true));
$this->redirect(array('action'=>'index')); }
$photos = $this->Album->find('all', array('conditions' => array('Album.id' => $id)));


$facebook = new Facebook(array('appId'=>'valid aphid', 'secret'=>'valid secret'));
$facebook->setFileUploadSupport(true);
$userid = $facebook->getUser();

if($userid) {
try {
$user_profile = $facebook->api('/me'); // Gets User's information based on permissions the user has granted to your application.

}
catch(FacebookApiException $e){
error_log($e);
// Print results if you want to debug.
$userid = null;
}

} else {

$login_url = $facebook->getLoginUrl($params = array('redirect_uri' => REDIRECT_URI,'scope' => PERMISSIONS_REQUIRED));
echo ("<script> top.location.href='".$login_url."'</script>");
}

//Create album
$results = $facebook->api('me/albums', 'post', $photos[0]['Album']['name']);//->photos_createAlbum($albumname, '', '', 'everyone', $this->_userid);

}

最佳答案

默认情况下,Facebook 类使用 PHP sessions存储用户的身份验证状态。可以使用四个 session 变量:

  • fb_{appid}_user_id:Facebook 用户 ID
  • fb_{appid}_code:需要换取access token的授权码
  • fb_{appid}_access_token:可用于调用 API 的访问 token
  • fb_{appid}_state:CSRF token

检查您的 PHP session 是否已配置并正常工作。

  • 默认情况下,cookie 名称是 PHPSESSID;您应该会在浏览器中看到该设置。
  • 如果您在多台服务器之间进行负载平衡,您将需要一种解决方案,让您可以在这些服务器之间共享 session 状态。
  • 您不能在开始 session 之前输出任何文本(如果需要,在实例化 Facebook 对象时自动完成)。您可能想尝试将其作为函数的第一行:

    if (!session_id()) { session_start(); }

关于函数中的 Facebook 身份验证 - getUser() 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7367072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com