如何实现OAuth认证和储存

  介绍

本篇内容介绍了”如何实现OAuth认证和储存”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

下面是一个基本的Mysql的例子:

CREATE  TABLE “oauth_users”, (   “id”才能,INT (10), UNSIGNED  NOT  NULL  AUTO_INCREMENT,   “oauth_provider”,才能VARCHAR (10),   “oauth_uid”才能,文本,   “oauth_token”才能,文本,   “oauth_secret”才能,文本,   “用户名”,才能文本,   PRIMARY 才能;KEY  (id)   ),引擎=MyISAM  DEFAULT  CHARSET=use utf8;

注意oauth_token和oauth_secret这两个字段.sina的OAuth认证需要令牌和token_secret两个参数来完成认证,所以我们需要预留两个字段来记录他们。

然后我们需要依次完成以下工作:

向SinaAPI发起认证申请注册/或者登录,如果用户已经有帐号的情况下将相关数据保存在会话中

基于OAuth的认证流程从生成一个网址开始。用户被重定向到该网址要求认证,认证通过后,会重定向到我们的应用服务器,并会将两个认证后的参数通过URL方式传回。

建立指数。php

& lt; php ?   session_start ();//如果(,收取($ _SESSION [& # 39; last_key& # 39;]),)   头才能(“;地点:,weibolist.php");   include_once (, & # 39; config . php # 39;,);   include_once (, & # 39; weibooauth.php& # 39;,);//,创建,sinaOAuth 对象实例   $ sinaOAuth =, new  WeiboOAuth (WB_AKEY 的不同之处是,WB_SKEY );   美元$ keys =, sinaOAuth→getRequestToken ();//,Requesting  authentication 令牌,,,parameter  is 从而URL  will  be  redirected 我方表示歉意   美元$ aurl =, sinaOAuth→getAuthorizeURL(,美元键[& # 39;oauth_token& # 39;],, false ,, & # 39; http://t.yourtion.com/sina/callback.php& # 39;);//,保存到,session 中   $ _SESSION[& # 39;键# 39;],=,美元的钥匙;   比;   https://www.yisu.com/zixun/& lt; a  href=" <=$ aurl ?> ">使用Oauth登录

接下来,我们还需要在这个文件中完成以下三件事:

验证URL中的数据
验证会话中的令牌数据
验证会话中秘密的数据

如果所有数据库都是合法的,我们需要创建一个新的SinaOAuth对象实例,跟之前不同的是,我们要把获取到的令牌数据做为参数传入对象。之后,我们应该可以获取到一个访问令牌,这个获取到的数据应该是一个数组,这个访问令牌是我们唯一需要保存起来的数据。

建立回调。php

& lt; php ?   session_start ();   include_once  (& # 39; config . php # 39;);   include_once  (& # 39; weibooauth.php& # 39;);   if (!空($ _GET [& # 39; oauth_verifier& # 39;]),,,, !空($ _SESSION[& # 39;键# 39;][& # 39;oauth_token& # 39;]),,,   !才能空($ _SESSION[& # 39;键# 39;][& # 39;oauth_token& # 39;)))   {//才能,SinaOAuth 对象实例,注意新加入的两个参数   时间=美元才能sinaOAuth  new  WeiboOAuth (WB_AKEY, WB_SKEY,,美元_SESSION[& # 39;键# 39;][& # 39;oauth_token& # 39;],   ,,,美元_SESSION[& # 39;键# 39;][& # 39;oauth_token_secret& # 39;]);//,才能获取,access 令牌   时间=美元才能access_token 美元sinaOAuth→getAccessToken ($ _REQUEST [& # 39; oauth_verifier& # 39;]);//,才能将获取到的,access  token 保存到,Session 中   美元才能_SESSION [& # 39; access_token& # 39;],=, access_token美元;//,才能获取用户信息   时间=美元才能user_info  sinaOAuth→美元得到(& # 39;帐户/verify_credentials& # 39;);//,才能打印用户信息   ,,mysql_connect (DATABASE_HOST, DATABASE_USER,, DATABASE_PSSWORD);   mysql_select_db才能(DATABASE_DB_NAME);//才能更换成你的数据库连接,在config . php中   if 才能;(收取(美元user_info→错误),或是空($ user_info [& # 39; id # 39;)))   {才能   ,,,//,东西# 39;s 错了,,go  back 用square  1   ,,,头(& # 39;地点:,index . php # 39;);   },才能   {才能   ,,,//,让# 39;s  find 从而user  by  its  ID   ,,,sql 美元;=,“SELECT  *,得到oauth_users  WHERE  oauth_provider=& # 39;新浪# 39;,以及oauth_uid=?。美元user_info [& # 39; id # 39;];   ,,,query 美元;=,mysql_query ($ sql);   ,,,result 美元;=,mysql_fetch_array($查询);   ,,,//,If 不,还是# 39;s  add  it 用,数据库   ,,,if (空(结果)美元)   ,,,{   ,,,,,sql 美元;=,“INSERT  INTO  oauth_users  (oauth_provider, oauth_uid,,用户名,oauth_token,, oauth_secret), VALUES (& # 39;新浪# 39;,,& # 39;“,。   ,,,,,,,美元user_info [& # 39; id # 39;],只“& # 39;,,& # 39;“,只user_info美元[& # 39;screen_name # 39;],只“& # 39;,,& # 39;“,只access_token美元[& # 39;oauth_token& # 39;],。   ,,,,,,,“& # 39;,,& # 39;“,只access_token美元[& # 39;oauth_token_secret& # 39;],只“& # 39;)“;   ,,,,,query 美元;=,mysql_query ($ sql);   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何实现OAuth认证和储存