2、facebook PHP版 SDK 身份验证和授权登录

一、授权登录

login.php 打开该链接,将显示“Login with Facebook!”登录链接

$fb = new Facebook\Facebook([
  'app_id' => '{app-id}', // Replace {app-id} with your app id
  'app_secret' => '{app-secret}',
  'default_graph_version' => 'v2.2',
  ]);

$helper = $fb->getRedirectLoginHelper();

$permissions = ['email']; // Optional permissions
$loginUrl = $helper->getLoginUrl('https://example.com/fb-callback.php', $permissions);

echo '<a href="' . htmlspecialchars($loginUrl) . '">Login with Facebook!</a>';

点击以上链接,用户将被重定向至 login-callback.php
$fb = new Facebook\Facebook([
  'app_id' => '{app-id}', // Replace {app-id} with your app id
  'app_secret' => '{app-secret}',
  'default_graph_version' => 'v2.2',
  ]);

$helper = $fb->getRedirectLoginHelper();

try {
  $accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  // When Graph returns an error
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  // When validation fails or other local issues
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}

if (! isset($accessToken)) {
  if ($helper->getError()) {
    header('HTTP/1.0 401 Unauthorized');
    echo "Error: " . $helper->getError() . "\n";
    echo "Error Code: " . $helper->getErrorCode() . "\n";
    echo "Error Reason: " . $helper->getErrorReason() . "\n";
    echo "Error Description: " . $helper->getErrorDescription() . "\n";
  } else {
    header('HTTP/1.0 400 Bad Request');
    echo 'Bad request';
  }
  exit;
}

// Logged in
echo '<h3>Access Token</h3>';
var_dump($accessToken->getValue());

// The OAuth 2.0 client handler helps us manage access tokens
$oAuth2Client = $fb->getOAuth2Client();

// Get the access token metadata from /debug_token
$tokenMetadata = $oAuth2Client->debugToken($accessToken);
echo '<h3>Metadata</h3>';
var_dump($tokenMetadata);

// Validation (these will throw FacebookSDKException's when they fail)
$tokenMetadata->validateAppId({app-id}); // Replace {app-id} with your app id
// If you know the user ID this access token belongs to, you can validate it here
//$tokenMetadata->validateUserId('123');
$tokenMetadata->validateExpiration();

if (! $accessToken->isLongLived()) {
  // Exchanges a short-lived access token for a long-lived one
  try {
    $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
  } catch (Facebook\Exceptions\FacebookSDKException $e) {
    echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n";
    exit;
  }

  echo '<h3>Long-lived</h3>';
  var_dump($accessToken->getValue());
}

$_SESSION['fb_access_token'] = (string) $accessToken;

// User is logged in with a long-lived access token.
// You can redirect them to a members-only page.
//header('Location: https://example.com/members.php');

弹出Facebook登录授权框,用户确定授权登录,在这里我们将获得 访问口令,最终页面显示内容如下:


Ps:

调用 getLoginUrl() 方法前,您需要确保启用了会话。在大多数 Web 框架中,这通常是自动完成的,但如果您没有使用 Web 框架,则可以将session_start(); 添加到login.phplogin-callback.php 脚本的顶部。

记得引入SDK,你与Facebook交互的站点必须是https协议的。

二、延迟访问口令

因为用户首次登录你的应用时,应用收到的访问口令是短期访问口令,有效期大约为 2 小时。通常来说,建议你将短期访问口令更换为有效期约 60 天的长期访问口令。

#login-callback.php
// OAuth 2.0 client handler
$oAuth2Client = $fb->getOAuth2Client();

// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken('{access-token}');

三、获取登录用户信息

$fb = new Facebook\Facebook([
  'app_id' => '{app-id}',
  'app_secret' => '{app-secret}',
  'default_graph_version' => 'v2.2',
  ]);

try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->get('/me?fields=id,name', '{access-token}');//$_SESSION['fb_access_token']
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}

$user = $response->getGraphUser();

echo 'Name: ' . $user['name'];
// OR
// echo 'Name: ' . $user->getName();




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用Facebook SDK登录,您需要遵循以下步骤: 1. 创建Facebook开发人员帐户并设置应用程序。 2. 在您的应用程序中包含Facebook SDK。 3. 配置您的应用程序以使用Facebook登录。 4. 实现Facebook登录按钮并使用Facebook SDK进行身份验证。 下面是一些更详细的步骤: 1. 创建Facebook开发人员帐户并设置应用程序: - 访问Facebook for Developers网站并创建一个新的开发人员帐户。 - 在Dashboard中创建一个新应用程序,并设置应用程序的名称和基本设置。 - 在设置中添加您的平台(iOS、Android等)和相关详细信息。 2. 在您的应用程序中包含Facebook SDK: - 使用CocoaPods或手动方式将Facebook SDK添加到您的项目中。 - 设置Facebook SDK的配置文件,并在应用程序启动时初始化SDK。 3. 配置您的应用程序以使用Facebook登录: - 在开发人员门户中的设置中,将Facebook登录设置为“启用”。 - 配置您的应用程序的Bundle ID和OAuth回调URL。 4. 实现Facebook登录按钮并使用Facebook SDK进行身份验证: - 将Facebook登录按钮添加到您的应用程序中,并将其链接到Facebook SDK登录方法。 - 处理登录成功或失败的回调,并在成功的情况下使用Facebook SDK返回的访问令牌进行身份验证。 这些是一些基本步骤,但要实现Facebook登录,您需要更详细的指南和文档。Facebook开发人员门户提供了详细的文档和示例代码,可帮助您完成此过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值