Created
June 9, 2013 14:18
-
-
Save jy00295005/5743714 to your computer and use it in GitHub Desktop.
a oauth client based on codeigniter PHP
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); | |
/** | |
* strategy_sauth.php | |
* | |
* A Oauth client | |
* | |
* @author Chen Ting | |
* @copyright free to use | |
* @link | |
* @since Version 0.0.1 | |
* @filesource | |
*/ | |
class Strategy_oauth | |
{ | |
//defaults 全局变量 | |
var $app_id = "YOU APPID" ; | |
var $app_secret = "YOU APP SECRET" ; | |
var $redirect_url = "YOU REDIRECT URL"; | |
var $grant_type = "authorization_code"; | |
var $post_token_url = "ACCESS TOKEN REQUEST URL"; | |
var $post_user_url = "ACCESS USER DATA REQUEST"; | |
//post request | |
private function post_my_curl($curlPost,$post_url) | |
{ | |
$ch = curl_init();//初始化curl | |
curl_setopt($ch,CURLOPT_URL,$post_url);//抓取指定网页 | |
curl_setopt($ch, CURLOPT_HEADER, 0);//设置header | |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 | |
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式 | |
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); | |
$data = curl_exec($ch);//运行curl | |
curl_close($ch); | |
return $data; | |
} | |
//使用code交换token | |
public function get_oauth_token($code) | |
{ | |
//local变量 | |
$curlPost = 'client_id='.urlencode($this->app_id). | |
'&client_secret='.urlencode($this->app_secret). | |
'&redirect_uri='.urlencode($this->redirect_url). | |
'&code='.urlencode($code). | |
'&grant_type='.urlencode($this->grant_type). | |
''; | |
//获取令牌 | |
$token_json = $this->post_my_curl($curlPost,$this->post_token_url); | |
$token_arr = json_decode($token_json,TRUE); | |
//检查是否有token返回值,没有弹出,有则使用token继续取用户数据 | |
if (!$token_arr['access_token']) { | |
return FALSE; //登陆失败 | |
} else { | |
$access_token = $token_arr['access_token']; | |
$curlPost = 'access_code='.urlencode($access_token).''; | |
$user_detail_json = $this->post_my_curl($curlPost,$this->post_user_url); | |
$user_detail_arr = json_decode($user_detail_json,TRUE); | |
if ($user_detail_arr['error'] == 1) { | |
return FALSE; //登陆失败 | |
} else { | |
return $user_detail_arr; | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment