php实现第三方登录,百度第三方登录

本文介绍如何使用PHP实现百度第三方登录功能,通过OAuth 2.0协议获取用户的授权信息,并详细记录了从创建百度开放平台应用到实现授权登录的具体步骤。
该文章已生成可运行项目,

php实现第三方登录,百度登录例子

  1. 配置说明
    1.1 php 版本5.3
    1.2 IDE phpstorm9.0.2

  2. 实现过程
    2.1前期准备
    建议先阅读 oAuth2.0的相关资料
    http://developer.baidu.com/wiki/index.php?title=docs/oauth
    然后再进行操作,极客学院的第三方登录视频也可以作为参考
    http://www.jikexueyuan.com/course/1742.html
    2.2具体实现
    1,登录百度开发者中心http://developer.baidu.com/
    百度开发中心
    登录之后,点击【应用管理】,然后点击【创建工程】,填写好相应的资料。然后我们得到了应用的API KEY和SECRET KEY 如下图所示。
    应用示例
    接着,在【安全设置】中填写我们的的授权回调页的地址,下图是我做测试用的。
    授权回调页
    2我没有用官方给的php-sdk ,所以自己写了一个。下面是项目的目录。项目目录
    建议还是先看一下官方的文档或者上面的视频,来具体操作一下,体会一下oAuth2.0的授权的过程。项目中涉及到的url都是官方文档里面的,我下面就不做详细的介绍了。
    首先是config.php

    $serect_key = '4HV51jiSg2OC0WXQnZ2Vqc0Gxu';
    $redirect_url = 'http://localhost/phpfrom0913/baidulogin/callback.php';
    $apibase_url = 'https://openapi.baidu.com/rest/2.0/';
    $logout = 'http://www.baidu.com';//线上调试使用

    这是用来填写应用所需要的一些值。包括secret-key,回调地址,百度应用接口调用的基本url信息,还有重定向用到的url。
    下面是login.php 是登录的界面。
    “`

当我们点击登录的图片的时候,我们将访问回调地址callback.php其代码如下:
```<?php
/**
 * Created by PhpStorm.
 * User: tao
 * Date: 2016-09-13
 * Time: 20:50
 */

session_start();
require_once 'config.php';
require_once 'dohttps.php';
$code = $_GET['code'];
if($code){
    $getaccesstoken_url = "https://openapi.baidu.com/oauth/2.0/token?grant_type=authorization_code&code=$code&client_id=$api_key&client_secret=$serect_key&redirect_uri=$redirect_url";
    $httpsobj = new doHttps();
    $https_res = $httpsobj->getdata($getaccesstoken_url);
    $accesstoken = $https_res['access_token'];
    $userinfo_url = $apibase_url.'passport/users/getLoggedInUser'.'?access_token='.$accesstoken;
    $user_res = $httpsobj->getdata($userinfo_url);
    $smallpic = $user_res['portrait'];
    $nickname = $user_res['uname'];
    $_SESSION['accesstoken'] = $accesstoken;
    $_SESSION['nickname'] = $nickname;
    $_SESSION['smallpic'] = $smallpic;
}else{
    echo "<javascript>alert('授权失败')</javascript>";
}
header("Location: ".'index.php');

其中包含了一个dohttps.php的文件,,这是用来模拟访问url以用来获得对应的get参数,例如code和accesstoken。当程序正确获取到code的时候就可以完成第三方登录操作了,也可以获取到用户相关的第三方的参数值,具体的可以参看官方的文档。

  1. 运行截图
    登录:登录界面
    跳转到百度登录界面:
    这里写图片描述
    登录成功,获取到用户信息
    这里写图片描述
    退出登录界面
    这里写图片描述
    可以看出退出的时候出现了错误,这是因为config.php中我们写的重定url和我们创建的百度应用中的安全配置中的域名不对应。如果想要正确退出,我们需要在【安全设置】中配置正确的根域名,这个我在线下的时候没有测试成功,因为没有办法正确填写根域名。按照安装官方文档中的说明去做的话,线上的测试是没有问题的,可是唯一的问题,在线上测试的时候,当我们第一次用百度授权登陆之后,之后成功退出,再次登陆的时候,如果不清除浏览器数据的话,就会出现页面无法访问的错误,提示是请求回调地址太频繁。
    至此,我还是没有解决为什么会出现我刚刚提到的问题,不知道是不是没有按照官方的sdk去使用,造成了某个环节记录无法彻底清除的错误,还是自己写的demo出错,决定回头再把sdk试用一遍,看看是否能正确的解决问题,假如有什么意见,记得戳我。
    把整个demo放到百度云盘里面了,假如需要的话,自己下载一下咯,不要嫌弃:)http://pan.baidu.com/s/1o7ONgqm OR 链接:http://pan.baidu.com/s/1dFds6WT 密码:zpd8
本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值