2

我在我的一个网站中使用 Facebook 登录,使用 sdk for PHP。

有时facebook登录有效,有时无效。

这是我的 index.php:

/// fb login area.....
include("facebook/src/facebook.php");

$facebook = new Facebook(array(
  'appId'  => '159326560901256',
  'secret' => 'c6b30bd2f80747b64d5b1d15a3da9e9c',
));

$user = $facebook->getUser();

$loginUrl = $facebook->getLoginUrl(array(
  'scope' => 'email',
  'redirect_uri' => 'http://xyz.com/login_fb.php'
));

<a href="<?=$loginUrl?>"><img class="fb_img" 
  src="images/fb_logo.png" width="153" height="38" /></a> 

它去login_fb.php

https://www.facebook.com/dialog/oauth?client_id=123131231&redirect_uri=http%3A%2F%2Fxyz.com%2Flogin_fb.php&state=403bc8aaf9eaee4064e3cc27befc71ff&scope=email

现在在 login_fb.php 我得到这个网址:

login_fb.php?code=ASA&S^&*A^S&*A^S&*^A&*ASUAUIYSUIYASIYAUSYUIASA

$user我得到0

/// code for login_fb.php
include("facebook/src/facebook.php");

$facebook = new Facebook(array(
  'appId'  => '159326560901256',
  'secret' => 'c6b30bd2f80747b64d5b1d15a3da9e9c',
));


// Get User ID
$user = $facebook->getUser();
if ($user) {
    try {
        $user_profile = $facebook->api('/me');
    } 
    catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
    }

    $logoutUrl = $facebook->getLogoutUrl(array(
      'next' => 'http://minuteville.com/index.php?val=fblogout'
    ));

为什么它不起作用?

4

2 回答 2

2

通过添加以下行并getAccessTokenFromCode在 Facebook SDK 中使用,可以解决问题。

访问代码过期。所以通过交换代码获取新的访问代码可以解决问题

$access_code = $facebook->getAccessTokenFromCode($_GET['code']);

于 2013-04-15T09:13:41.147 回答
1

https://developers.facebook.com/docs/howtos/login/server-side-login/#step6

您应该能够使用 code 参数构建访问令牌以获取用户。这一切都写在文档中。

于 2013-04-15T07:39:22.693 回答