0

我已阅读有关 facebook opengraph 连接的信息 - 据我了解,登录过程只需 3 个步骤:

  1. 从 facebook api 调用获取登录 url 以创建自定义登录按钮 单击链接后,我们将被重定向到 facebook 登录页面

  2. 进行实际登录并重定向到我们在应用程序 facebook 开发人员页面中定义的站点

  3. 在这个页面中,我们必须处理实际结果。问题来了:我知道我们必须使用令牌并向 fb 页面发出新请求才能验证令牌(见下文)。

在此之后,我假设我们获得了用户的实际详细信息,但我从未设法执行此令牌请求,因此我不确定如何继续。

$ch = curl_init("http://graph.facebook.com/oauth/access_token?    client_id=".$facebook_config['appId']."    
                                                          &client_secret=".$facebook_config['secret']."
                                                          &redirect_uri=".urlencode(SITE_DOMAIN)."/facebook_login_processor.php
                                                          &code=".$_GET['code']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 30000);
$data = curl_exec($ch);
$curl_errno = curl_errno($ch);
$curl_error = curl_error($ch);
curl_close($ch);

if ($curl_errno > 0) 
{
    echo "cURL Error ($curl_errno): $curl_error\n";
} 
else 
{
    echo $data;
}

我收到一个关于redirect_uri- 不知何故没有得到验证的错误。

{"error":{"message":"Missing redirect_uri parameter.","type":"OAuthException","code":191}}

请记住,我正在非公共网站上尝试此操作(域仅在服务器和我的主机文件中注册)。这会带来问题吗?

感谢您的帮助,感谢您的关注和帮助

里卡多

Ps.:抱歉有任何错误 - 我正在打电话

4

1 回答 1

1

基于 facebook php sdk,下面的脚本在我的网站上运行良好。

    <?php
    要求一次“lib/facebook.php”;

    $scope = "create_note,email friends_groups,friends_interests";
    $redirecturl = "https://www.mysite.com/callback.php";

    $facebook = new Facebook(array('appId' => APP_ID,'secret' => APP_SECRET));
    $authurl = $facebook->getLoginUrl(array('scope' => $scope, 'redirect_uri' => $redirecturl);

    header("位置:$authurl");

    ?>

然后在 callback.php

    <?php
    要求一次“lib/facebook.php”;

    $facebook = new Facebook(array('appId' => APP_ID,'secret' => APP_SECRET));
    $user = $facebook->getUser();
    如果($用户){
      尝试 {
        $user_profile = $facebook->api('/me');
      } 捕捉(FacebookApiException $e){
        错误日志($e);
        $用户=空;
      }

      if (!empty($user_profile)) {
         print_r($user_profile);
         // 或者在这里做点什么
      }
    }
    ?>

注意:您应该定义 APP_ID 和 APP_SECRET。

于 2013-09-15T10:01:21.040 回答