本文以接入新浪账户为例,说明通过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设置的地方比较隐蔽:
2. 请求OAuth登录页
授权地址:
https://api.weibo.com/oauth2/authorize
使用GET方式传入以下参数:
client_id=YOUR_CLIENT_ID
response_type=code
redirect_uri=YOUR_REGISTERED_REDIRECT_URI
可以通过下面的超链接的形式:
3. OAuth服务器返回授权结果
(1)如果用户放弃登录,则会跳转到取消授权回调页
(2)如果用户登录成功,则会跳转到授权回调页,并且会返回一个code参数,供我们进一步获取Access Token使用。
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了。
源代码下载:(源代码是免费下载的~)
http://download.csdn.net/detail/koastal/9351381