百度第三方登录

首先第三方应用要跟微信帐号合作,然后按照下面的方法操作:

  目前,百度OAuth2.0支持五种获取Access Token的流程和一种刷新获取AccessToken方式,第三方可根据需求选取合适的方式:

  百度授权的Access Token是有有效期的,这样会影响用户的体验和增加开发者的工作。所以平台提供了一种方式可以保证授权有效期为永久。

  • 实现方式:返回给第三方一个月有效期的Access Token + 十年有效期的Refresh Token。
  • 实现原理:Refresh Token的作用就是在Token有效期截止前,刷新以获取新的Access Token。

第一步:注册百度直达号应用。

可以通过百度的开放平台去注册一个应用。之后你会得到一个App Key和一个App Secret。拥有它们,你才可以申请权限。

假设你的App Key是“1234567890”,App Secret是“abcdefghijklmnopqrstuvwxyz"

第二步:写代码。

将获取到的OAuth的php版本的SDK加入你的project中。将你申请到的Key和Secret做为两个变量定义并赋值。

对于OAuth来说,很多细节不需要我们去关注的,只要知道几个重要的步骤即可:

 1. 第三方发起百度授权登录请求,百度用户允许授权第三方应用后,百度会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;

 2. Access Token:用户身份验证和授权的凭证。第三方应用在调用百度开放API之前,首先需要获取Access Token。

 3. 通过code参数加上AppID和AppSecret等,通过API换取access_token;

 4. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

  4. 获得未授权的access_token这个获得未授权的 access_token就相当于放行条,也就是百度允许你开始获取用户的权限。

  5. 根据这个access_token的内容,获得一个url地址,这个地址页面就是想登录你应用的用户输入用户名和密码的地方。注意的是,这个url是属于百度为你的这个应用创建的回调地址。

  6. 用户在上述登录界面输入自己的用户名和密码,成功登录之后,你可以获得已授权的 Access KEY。这个Access Key就包含了用户多登录信息(包括昵称、用户openID等等,这里的昵称是指用户显示在百度上的名字,而不是用户的登录名)。

实例代码:

1、调用授权页面:login.php

//百度第三方登录函数
function baidu(){require_once('u/baidu/Baidu.php');$clientId = '1234567890';$clientSecret = 'abcdefghijklmnopqrstuvwxyz';$redirectUri = 'http://www.bookask.com:8080/?a=login&b=callback&c=baidu';$domain = '.book.com';$baidu = new Baidu($clientId, $clientSecret, $redirectUri, new BaiduCookieStore($clientId));// 获取用户id和用户名$user = $baidu->getLoggedInUser();// 百度第三方登录url地址和退出url地址if ($user) {$logoutUrl = $baidu->getLogoutUrl('http://robin928.sinaapp.com/demos/website/logout_callback.php?u=' . urlencode(BaiduUtils::getCurrentUrl()));                            header("Location:".$logoutUrl);  } else {$loginUrl = $baidu->getLoginUrl('', 'popup');header("Location:".$loginUrl);}}

2、回调程序callback.php

// 百度第三方回调函数
function baidu(){require_once('u/baidu/baiduapi.inc.php');if ($user) {$apiClient = $baidu->getBaiduApiClientService();$profile = $apiClient->api('/rest/2.0/passport/users/getInfo', array('fields' => 'userid,username,sex,birthday'));var_dump($profile);               // 第三方登陆数据处理开始    $userid =$profile['userid'];$sql = "select * from `ub01` where ub01004 = '$userid'";$chek = _selectone($sql) ? _selectone($sql) : array();if(!empty($chek)){$_SESSION['uid']=$res['ua01001'];echo '授权成功';// header("Location:?"); }else{echo '授权失败';}}else{echo "授权失败";}exit;
}

3、PHP-SDK-1.0.rar 包解压的核心文件,注意路径问题。

 

 

转载于:https://www.cnblogs.com/520fyl/p/5420764.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288064.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

剑指offer之重建二叉树

1 问题 重建二叉树:给定二叉树的先序遍历(根左右)和中序(左中右)遍历结果,建立这棵二叉树。输入保证二叉树无重复结点 以先序{1, 2, 4, 7, 3, 5, 6, 8}和中序{4, 7, 2, 1, 5, 3, 8, 6}为例 2 分析 先序遍…

ArcGIS 10.5专题地图制作自定义漂亮图框

先来看一下效果: 下面来说明如何在ArcGIS软件里面实现自定义图框。 1. 【自定义】→【样式管理器】→【Administrator.style】→【边框】→【新建】→【常规边框】。 2. 点击【更改符号】。 3. 点击【编辑符号】。

当我会AOP之后,去丈母娘家都是挺着胸脯!

当和朋友谈到AOP时,第一映像会说AOP的应用层面,比如拦截器、过滤器,实现复用等等使用层面上。这些应用层面上的回答远远没有深入AOP的思想。是的,AOP是思想,面向切面思想。既然是编程思想,那我们就有必要了…

Ubuntu系统备份工具大全(官方整理推荐)

其实官方在系统备份这块已经有Wiki整理和收集各类实用的工具。以下是翻译自官方Wiki的部分文档: 备份工具 wiki文档实用程序 工具 界面 格式类型 Raw/File 支持 远程 增量 差异 自动化 Dj Dup 图形(集成到系统工具) File 是 是 …

python 最简单的实现适配器设计模式

适配器设计模式是懒得改动某些代码,或者某些接口不方便改动的时候,使用一个特定的封装,一些特定的编写办法,使不同的接口可以使用同种调用方式使用。 更简单的说话则是,例如几个不同的接口 aliyun、qiniuyun、tencent…

Envi和ArcGIS软件打开和处理.NC4数据

NC4是NetCDF-4的简缩形式。 NetCDF(network Common Data Form)网络通用数据格式是由美国大学大气研究协会(University Corporation for Atmospheric Research,UCAR)的Unidata项目科学家针对科学数据的特点开发的,是一种面向数组型并适于网络共享的数据的描述和编码标准。目…

cocos2d-x 3.0rc2中读取sqlite文件

cocos2d-x 3.0rc2中读取sqlite文件的方式,在Android中直接读取软件内的会失败。须要复制到可写的路径下 sqlite3* dbFile NULL;std::string path;path FileUtils::getInstance()->fullPathForFilename("db1.db");#if CC_TARGET_PLATFORM CC_PLATFOR…

hse不起振 stm8_STM8S207使用外部24M晶振不起振的解决办法

具体表现:1、使用 20M 的外部晶振,程序也能正常工作。2、使用 24M 的外部晶振,就不能工作,经示波器测量,晶振没有起振。3、为了去除晶振的原因,就换了一个 24M 的晶振,结果还是不行,…

剑指offer之数组出现次数超过一半的数字

1 问题 数组中有一个数字出现了次数超过数组长度的一半,请找出这个数字。 比如{1,2,3,2,2,2,5,4,2},我们知道这个数是2 2 分析 我们数组元素个数分为单数和双数 1)数组长度是单数的情况下 我们有5个元素,里面至少3个2,还有2个…

C#多线程调试

概要这篇文章主要分享多线程部分调试技巧,在日常的开发工作中会经常遇到多线程调试的需要。在我们调试的过程中会出现断点的焦点在多个线程之间“反复横跳”根本无法集中跟踪某一个线程的操作链路。那么今天我们来看看如何调试操作。如果有其它需要的可以参考下面微…

最速下降法(梯度下降法)

最速下降法的影子在机器学习中正是无处不在,它简单实用。 一、表示 在最速下降法中,对权值向量w的连续调整是在最速下降的方向上,即它是与梯度向量方向相反的,梯度向量记为(1),简记(…

游戏服务器销售额,游戏服务器销售一个月

游戏服务器销售一个月 内容精选换一换应用容器化改造有三种方式,您可单击这里查看。本教程以某游戏为例,将该游戏进行微服务的架构改造,再进行容器化。本教程不对改造细节做深度讲解,仅讲解大致的建议。如需要详细了解容器化改造的…

使用AppCompat项目模版

2019独角兽企业重金招聘Python工程师标准>>> 使用AppCompat项目模版 从Android API 22开始,谷歌推荐使用AppCompatActivity来构建带标题栏的App,而不是原有的ActionBarActivity。如果用户想要使用AppCompatActivity,可以使用Xamar…

python3 最基本且简单的实现组合设计模式

组合模式是把一个类别归为一个整体,并且组织多个整体之间的关系,使用通过树形结构来描述所有整体。 一般的编写方式为一个类别对象下添加多个该对象的元素,该对象又为其它对象下的元素。简单来说就是一个学校有一个总部,总部下有…

SQL Server 2008 阻止保存要求重新创建表的更改问题

习惯了使用SQL Server 2005进行数据库系统开发,为了赶上潮流的发展,最近在使用SQL 2008数据库,本来建好了一个表,后面需要对表的设计做些修改(比如字段长度的修改,忘记了设置主键等等),结果弹出错误提示,说什么“组织保存要求重新创建表的更改”,如下所示: 解决办法…

华为手机像素密度排行_华为手机也分三六九等,3款几乎“0差评”,支持5G价格良心...

随着9月15日美国对华为禁令的生效,台积电、三星等都无法再为华为供货。目前,华为芯片库存有限,可以说是用一片少一片,十分珍贵。因此,许多消费者都希望能在华为芯片用完之前,换一部新机。不过,华…

$geoNear

怎么使用mongoose的geoNear 2014-11-26 15:05:20| 分类: mongodb | 标签:mongoose |举报|字号 订阅 下载LOFTER我的照片书 |起因 在开发的时候碰到一个情况,数据源有100个景点,需要对给出的一个点,求距离它最近的…

linux shell之删除当前文件夹不包含文件1和文件2的其他所有文件

1 问题 删除当前文件夹不包含文件1和文件2的其他所有文件,这个当前文件夹里面可以包含子文件夹,然后子文件夹里面也有文件1和文件2,但是这里的文件1和文件2也不应该被删除。 2 解决办法 可以用如下shell命令都行 find . -type f -not -name…

甲骨文宣布供应链管理云平台支持LogFire仓库管理系统

本文讲的是 :甲骨文宣布供应链管理云平台支持LogFire仓库管理系统 ,【IT168 资讯】甲骨文发布了一系列对其供应链管理产品的更新,并表示,云平台现在支持去年收购LogFire的仓库管理系统(WMS)。 ▲ Oracle将在最新版本的Oracle供应链管理(SCM)Cloud产品…

i5老是显示无服务器,为什么懂电脑的人选择买i5处理器,而不是i7,背后的真实原因?...

摘要:我们在选购电脑的时候经常会被五花八门的型号参数看的神魂颠倒,有很多朋友对cpu的理解也仅限于i7一定比i5好,i5一定比i3好的阶段。然而,对于很多懂电脑的人来说,选购电脑时,都不会买i7的CPU处理器&…