oauth 与 facebook

Posted

技术标签:

【中文标题】oauth 与 facebook【英文标题】:oauth with facebook 【发布时间】:2012-03-20 15:02:13 【问题描述】:

我正在尝试获取用户是否登录 facebook,如果是,那么我需要将他们的个人资料图片 url、名称存储在我的数据库中,以便用户可以在我的 web 应用程序中发表评论。

我不能这样做,我为网站创建了一个 facebook 应用程序,并使用以下代码进行身份验证。但它显示“发生错误。请稍后再试。”

有人请帮帮我吗?或者帮我编写工作代码?

<?php
require_once('../src/facebook.php');

$fb_app_id = "key";
$fb_secret = "secret";
$fb_app_url = "url";
$facebook = new Facebook(array(
    'appId'  => $fb_app_id,
    'secret' => $fb_secret,
    'cookie' => true,
));

$user = $facebook->getUser();

if ($user) 
  // The user is logged in
  try 
    $user_profile = $facebook->api('/me');
    // Here : API call succeeded, you have a valid access token
   catch (FacebookApiException $e) 
    // Here : API call failed, you don't have a valid access token
    // you have to send him to $facebook->getLoginUrl()
    $user = null;
  
 // else : the user is not logged in


?>



<?php if ($user): ?>
    <a href="<?php echo $facebook->getLogoutUrl() ?>">Logout of Facebook</a>
<?php else: ?>
    <a href="<?php echo $facebook->getLoginUrl() ?>">Login with Facebook</a>
<?php endif ?>

【问题讨论】:

试试 if ($user_profile) 而不是 嗨,我试过了......但仍然显示错误......这个脚本是否适用于您的 app_key 和密钥?脸书方面有什么特别的变化吗? 【参考方案1】:

你可以试试这个

require_once('../src/facebook.php');
$facebook = new Facebook(array(
  'appId'  => 'xxxxxxxxxxxx',
  'secret' => 'xxxxxxxxxxxx',
  'cookie' => true,
));

$fb_user_id = $facebook->getUser();

try 

$fb_user_profile = $facebook->api('/me');   
$me  = $facebook->api('/me');

catch (FacebookApiException $e) 


$fb_user_id = NULL;

$fbid = $me['id']; 
$firstname = $me["first_name"];
$lastname =  $me["last_name"];
$gender = $me["gender"];
$email = $me["email"];

if ($facebook->getSession()) 
  echo '<div id="fbc-img"><img src="http://graph.facebook.com/'.$me['id'].'/picture?type=normal"  ></div>
  <div id="fbc-info">Welkom, '.$firstname.' ! <br><a href="' . $facebook->getLogoutUrl() . '">Logout </a></div> ';

 else 
  echo '<a href="https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_WEBSITE&scope=email" target="_blank">Login met facebook</a> ';

【讨论】:

感谢您的帮助,当我尝试时收到此消息致命错误:调用 /home/aasrayac/public_html/domain.com/fb/examples/index 中未定义的方法 Facebook::getSession() .php 在第 28 行 你更新你的 Facebook PHP SDK 了吗?这是一个链接github.com/facebook/php-sdk您需要将 SRC 文件夹放在您的根目录中,并且不要忘记将 require_once 指向 facebook.php 文件 您似乎没有或没有指出正确的 facebook.php 文件

以上是关于oauth 与 facebook的主要内容,如果未能解决你的问题,请参考以下文章

OAuth2 密码授予与 OpenID 连接

Moodle之OAuth认证配置与实现

Moodle之OAuth认证配置与实现

Moodle之OAuth认证配置与实现

Oauth 2.0 与 Auth0 与 WSO2

OAuth 授权与身份验证