OAuth2.0的学习和实践

本文以接入新浪账户为例,说明通过OAuth2.0微博登陆的步骤

慕课网关于OAuth2.0的视频教程地址:

http://www.imooc.com/learn/557

新浪微博关于OAuth2.0的说明文档地址:

http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E


1. 申请APP Key和App Secret


想要使用新浪微博的账户接入服务,必须首先在新浪微博开发平台创建一个应用,并申请得到APP Key和App Secret,还要设置CALLBACK_URL

Key和Secret在创建完应用之后,就可以看到。

CALLBACK_URL设置的地方比较隐蔽:

OAuth2.0的学习和实践_第1张图片


2. 请求OAuth登录页


授权地址:


https://api.weibo.com/oauth2/authorize


使用GET方式传入以下参数:


client_id=YOUR_CLIENT_ID


response_type=code


redirect_uri=YOUR_REGISTERED_REDIRECT_URI

可以通过下面的超链接的形式:

OAuth2.0的学习和实践_第2张图片



3. OAuth服务器返回授权结果

(1)如果用户放弃登录,则会跳转到取消授权回调页

(2)如果用户登录成功,则会跳转到授权回调页,并且会返回一个code参数,供我们进一步获取Access Token使用。

OAuth2.0的学习和实践_第3张图片

4. 使用code参数,向OAuth服务器换取Access Token


授权地址:


https://api.weibo.com/oauth2/access_token


传入参数:


client_id=YOUR_CLIENT_ID


client_secret=YOUR_CLIENT_SECRET


grant_type=authorization_code  //该参数是固定值


redirect_uri=YOUR_REGISTERED_REDIRECT_URI


code=CODE //这就是上一步获取的code值


可以使用curl获取Access Token

<?php 
	session_start();
	
	require_once('config.php');
	require_once('curl.php');
	$param = array();
	if(isset($_REQUEST['code'])){
		$param['code'] = $_REQUEST['code'];
		$param['client_id'] = WB_AKEY;
		$param['client_secret'] = WB_SKEY;
		$param['grant_type'] = "authorization_code";
		$param['redirect_uri'] = WB_CALLBACK_URL;
		$param = http_build_query($param);
		$url = WB_ACCESS_TOKEN_URL;
		
		$res = curl_post($url,$param);
		$token = json_decode($res,true);
		if(is_array($token)){
			$_SESSION['token'] = $token['access_token'];
			header("Location:index.php");
		}		
	}
	

5. 通过Access Token,调用微博可用API


我们在上一步已经将Access Token存到SESSION中,然后可以调用微博系统允许我们调用的API了。

OAuth2.0的学习和实践_第4张图片



源代码下载:(源代码是免费下载的~)

http://download.csdn.net/detail/koastal/9351381



你可能感兴趣的:(OAuth2.0的学习和实践)