本文默认您可以正常访问facebook官网,并且已经注册facebook应用。
facebook登陆功能,验证方式是Oauth2.0,这样第三方应用不需要知道用户的账号密码,就可以获得用户在facebook上的注册信息。官方提供了SDK PHP v5,十分强大,可以调用官方的各种API。
1.PHP v5文档PHP SDKSDK的使用方法文档介绍很详细,这里不做赘述,需要理解命名空间,并且成功加载autoload.php,之后就可以很轻松的调用里面的方法了。
2.登陆功能实现(基于Oauth2.0认证):具体流程是,
》》用户点击facebook登陆按钮;
》》本地服务器请求facebook服务器;
》》facebook返回重定向跳转到facebook登陆页;
》》用户输入用户名密码,点击提交,请求facebook服务器;
》》facebook进行用户名密码验证,成功则携带access_token信息重定向到开发者指定的路径上(不如网站首页,可以使用获得的access_token来获取用户信息);
Oauth认证
OAuth2.0
》》附上官方文档facebook login
3.贴出部分代码(使用的是PHP V5)
本人用的是TP框架,phpv5包放在vendor目录下
<?php
namespace Home\Controller;
use Think\Controller;
class FacebookController extends Controller{
public function __construct()
{
parent::__construct();
require_once VENDOR_PATH.'Facebook/'.'autoload.php'; //自动加载函数很重要
}
//登录按钮
public function index()
{
//echo VENDOR_PATH;
$fb = new \Facebook\Facebook([
'app_id' =>'YOUR APP ID',
'app_secret' =>'YOUR APP SECRET',
'default_graph_version' => 'v2.5',
]);
//返回的是helper对象
$helper = $fb->getRedirectLoginHelper();
//希望获得的用户权限,用户在登陆时可以选择权限
$permissions = ['email', 'user_likes']; // optional
//这里的地址是用户登陆成功后的跳转地址,需要在你的app管理中心设置一下,下面有详解
$loginUrl = $helper->getLoginUrl('http://127.0.0.1/Twsearch/index.php/Home/Facebook/get_access', $permissions);
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
}
public function get_access($code)
{
$fb = new \Facebook\Facebook([
'app_id' =>'YOUR APP ID',
'app_secret' =>'YOUR APP SECRET',
'default_graph_version' => 'v2.5',]
);
$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))
{
// Logged in 获得access_token并保存到session里!
$_SESSION['facebook_access_token'] = (string) $accessToken;
echo $accessToken;
// Now you can redirect to another page and use the
// access token from $_SESSION['facebook_access_token']
}
}
}
3.需要注意的两点
3.1跳转路径需要在APP管理中心设置APP高级设置
这里的地址要跟代码里的地址匹配
3.2如果您使用翻墙访问facebook那本地服务器通过curl来访问facebook是就需要加上代理设置
两个标记一个是添加代理,另一个是跳过证书验证。