我是靠谱客的博主 快乐小蘑菇,最近开发中收集的这篇文章主要介绍回顾篇:淘宝API web开发一 授权登录,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  重新回顾了之前做的淘宝API模块,记录一下思路。

(1) 在开始开发之前,先要注册成为一个开发者,创建自己的应用。

       步骤在淘宝开发平台中http://open.taobao.com/doc/detail.htm?id=66中已有详细说明,在这里不再重复介绍。

       注意,在创建应用中,需要填写一个回调URL。在填写回调地址时,如果还在测试阶段的,可以填写一个本地的地址,例如 http://localhost/webERP/api/taobao/taobaoAuth.php,在本地测试通过后,要将其应用上线时,才将回调地址更改正式域名地址。

(2)用户授权登录。

        在我们的应用与淘宝平台对接后,需要获取用户的隐私信息,为了保证数据的安全性和隐私性,我们的应用需要引导用户完成“使用淘宝账号登录并授权”的流程(http://open.taobao.com/doc/detail.htm?spm=0.0.0.0.ckBODm&id=118)。以此来获取访问令牌access_token,access_token是应用在调用API访问和修改用户数据时必须传入的参数。

        在引导使用应用的用户登录授权时,页面会跳转到所填写的回调地址,同时返回授权码code,我们可以利用这个返回的授权CODE和注册应用时分配的AppSecret,通过Http Post方式换取访问令牌access_Token,获取访问令牌的返回值以json格式返回。

返回结果示例如下:

 {

  "w2_expires_in": 0,
  "taobao_user_id": "263685215",
  "taobao_user_nick": "%E5%95%86%E5%AE%B6%E6%B5%8B%E8%AF%95%E5%B8%90%E5%8F%B752",
  "w1_expires_in": 1800,
  "re_expires_in": 0,
  "r2_expires_in": 0,
  "expires_in": 86400,
  "token_type": "Bearer",
  "refresh_token": "6200e1909ca29b04685c49d67f5ZZ3675347c0c6d5abccd263685215",
  "access_token": "6200819d9366af1383023a19907ZZf9048e4c14fd56333b263685215",
  "r1_expires_in": 1800
}
各个字段代表的含义如下:

Key

类型

选项

示例

说明

access_token

string

必选

2YotnFZFEjr1zCsicMWpAA

Access token

token_type

string

必选

Bearer

Access token的类型目前只支持bearer

expires_in

number

必选

10(表示10秒后过期)

Access token过期时间

refresh_token

string

可选

2YotnFZFEjr1zCsicMWpAA

Refresh token

re_expires_in

number

可选

10(表示10秒后过期)

Refresh token过期时间

r1_expires_in

number

必选

10(表示10秒后过期)

r1级别API或字段的访问过期时间

r2_expires_in

number

必选

10(表示10秒后过期)

r2级别API或字段的访问过期时间

w1_expires_in

number

必选

10(表示10秒后过期)

w1级别API或字段的访问过期时间

w2_expires_in

number

必选

10(表示10秒后过期)

w2级别API或字段的访问过期时间

taobao_user_nick

string

必选

淘宝测试test

淘宝账号

taobao_user_id

string

必选

706388888

淘宝帐号对应id

sub_taobao_user_id

string

可选

2343535

淘宝子账号对应id

sub_taobao_user_nick

string

可选

淘宝测试test:123

淘宝子账号


access_token具有一定的有效期的,我们可以从中提取access_token字段,并将其保存在数据库中,在有效期内使用,而不用每次使用都进行授权。

具体获取授权码code和访问令牌token的代码如下:

webERP / api / taobao / common / taobaoClientHelper.php

<?php
/**
* 这个文件包含 taobaoClientHelper 类
*/

/**
* taobaoClientHelper 引导使用应用的用户登录到指定的地址获取code
* 根据code 和 AppSecret获取访问令牌access_token
*
*/

require_once 'taobaoClient.php';

class taobaoClientHelper extends taobaoClient{

	/**
	* @var string 新建应用时填写的回调地址
	*/
	public $redirctUri;

	/**
	* @var string 获取授权码CODE的地址
	*/
	protected $authorizeUrl = 'https://oauth.taobao.com/authorize';	

	/**
	* @var string 获取访问令牌token的地址
	*/
	protected $tokenUrl = 'https://oauth.taobao.com/token';

	/**
	* 设置沙箱环境,如果是在本地测试,可以调用该方法,返回的数据是虚拟的
	*/
	public function sandboxEnv(){

		$this->authorizeUrl = 'https://oauth.tbsandbox.com/authorize';

		$this->tokenUrl = 'https://oauth.tbsandbox.com/token';

		//访问API的地址
		$this->gateWayUrl = 'http://gw.api.tbsandbox.com/router/rest';

	}

	/**
	* 返回引导用户授权的http请求URL
	* @param string $redirctUri 新建淘宝应用时填写的回调地址
	*/
	public function getAuthorizeUrl( $redirctUri = null ){

		$redirctUri || $redirctUri = $this->redirctUri;
		//根据淘宝要求的参数

		//参数response_type 固定值为code
		$param['response_type'] = 'code';

		//参数client_id 创建应用时的Appkey
		$param['client_id'] = $this->appKey;

		//参数redirect_uri 应用的回调地址,必须与创建应用时所填回调页面url一致
		$param['redirect_uri'] = $redirctUri;

		//可选参数state ,自定义,颁发授权后会原封不动返回
		$param['state'] = 'Nancy';
		
		//可选参数view,默认值为web
		$param['view'] = 'web';

		return $this->authorizeUrl . '?' . http_build_query($param);
	}

	/**
	* 根据返回的授权码code,通过http post方式换取access token,以json的格式返回
	* @param string $code 授权登录后返回的code码
	* @param string $state 授权登录时原封不动返回的state
	* @param string $redirctUri 回调地址
	* @return 访问令牌access token 的json对象
	*/
	public function fetchAuthorizeToken($code, $state, $redirctUri = null){

		$redirctUri || $redirctUri = $this->redirctUri;
		//系统参数
		$param = array(

			'client_id' => $this->appKey; //创建应用时的Appkey
			'client_secret' => $this->secretKey; //创建应用时的Appkey
			'grant_type' => 'authorization_code'; //授权类型,默认为authorization_code
			'code' => $code; //授权码code
			'redirect_uri' => $redirctUri; //授权码code
			'state' => $state; //可选参数state
			'view' => 'web'; //可选参数,默认为web

			);

		//父类函数curl() 利用curl post 参数到tokenUrl,进行连接
		$json = $this->curl($this->tokenUrl, $param);

		//避免包含生涩的汉字而进行utf8的转码
		$json = iconv('gbk', 'utf-8', $json);

		//解析json格式
		$json = json_decode($json);

		//如果返回异常,会返回异常error 和 error_description
		if( isset($json->error) && isset($json->error_description) ){
			throw new Exception($json->error_description, intval($json->error));
		}

		return $json;
	}
}
?>
我们编写一个小小的程序来测试如何获取token,在此之前,需要一些必要的配置信息 webERP / api / taobao / common / taobaoConfig.php

<?php

header('Content-Type:text/html;charset=UTF-8');

ini_set('display_errors' , 'on'); //显示所有错误
ini_set('display_startup_errors', 'on');
error_reporting( E_ALL ^ E_NOTICE); //显示除去notic的所有错误信息

include 'taobaoClientHelper.php';

$taobao = new taobaoClientHelper();

$taobao->appKey = "创建应用时的Appkey";
$taobao->secretKey = "创建应用时的secretKey";

//如果已经获取过访问令牌,并且令牌还在有效期内,可以不再需要授权
$access_token = "访问令牌access_token";

/**
* 回调地址,在创建应用时,如果还处于测试阶段,回调地址可以写测试地址
* 设置测试环境
*/
if( $_SERVER['SERVER_NAME'] == 'localhost'){

	$taobao->redirectUri = 'http://localhost/webERP/api/taobao/taobaoAuth.php';

	$taobao->sandboxEnv();

}else{

	$taobao->redirectUri = 'http://正式域名/webERP/api/taobao/taobaoAuth.php';

}

 ?>
测试淘宝授权,该文件为回调地址文件 webERP/api/taobao/taobaoAuth.php
<?php

/**
* 回调文件 taobaoAuth.php
*/
include 'common/taobaoConfig.php';

//用户登录授权时,会返回授权码CODE
if(isset($_GET['code'])){

	$state = isset($_GET['state'])? $_GET['state'] : '';

	//获取access token
	try{

		$token = $taobao->fetchAcessToken( $_GET['code'] , $state );

		if( isset($token->access_token) ){

			//返回的access_token可以保存在数据库中,或者做自己需要的操作
			echo '<pre>';
			print_r($token);

		}

	}catch (Exception $e){

		//异常,重新获取
		header('Location: taobaoAuth.php');

	}

}else{

	//引导用户到授权登录页面
	$authUrl = $taobao->getAuthorizeUrl();

	echo "<script>window.open('".$authUrl."');</script>";

}
?>

获得access_token后,我们就可以正式调用API了,在下一篇我们就会开始讨论淘宝API的调用。






最后

以上就是快乐小蘑菇为你收集整理的回顾篇:淘宝API web开发一 授权登录的全部内容,希望文章能够帮你解决回顾篇:淘宝API web开发一 授权登录所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部