Facebook第三方登陆

来源:互联网 发布:nico sm是什么软件 编辑:程序博客网 时间:2024/05/21 18:35

本文默认您可以正常访问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目录下

<?phpnamespace 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是就需要加上代理设置
这里写图片描述

两个标记一个是添加代理,另一个是跳过证书验证。

1 0
原创粉丝点击