新浪微博实现第三方网站登录
创建新浪微博账号
可用微博账号登录 登录地址:http://open.weibo.com/
网站接入
2.立即接入->添加新网站
创建成功
获取 App key 和 App Sercet
header请求
public function actionSina() {
$url = 'https://api.weibo.com/oauth2/authorize?client_id='.$app_id.'&response_type=code&redirect_uri='.$redirect;
header('Location:' . $url);
}
获取微博用户信息
<?php
class SinaApi{
private $app_id = '150*****5008';
private $app_secret = '27cd83ec*******e7b661f74';
private $redirect = 'http://www.******.cn/';
function __construct()
{
}
/**
* 获取access_token
* @param $code [string] $code [登陆后返回的$_GET['code']]
* @return mixed
*/
function get_access_token($code) {
$url = 'https://api.weibo.com/oauth2/access_token?client_id='.$this->app_id.'&client_secret='.$this->app_secret.'&grant_type=authorization_code&code='.$code.'&redirect_uri='.$this->redirect;
$data = array(
);
// $token = array();
// parse_str($this->curl_post_content($url, $data), $token);
$token = $this->curl_post_content($url, $data);
print_R($token);
return $token;
}
/**
* [string] $token [授权码]
* @return mixed
*/
function get_user_info($token) {
$url = 'https://api.weibo.com/2/users/show.json?access_token='.$token;
$info = json_decode($this->curl_get_content($url), TRUE);
return $info;
}
private function curl_get_content($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
//设置超时时间为3s
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
private function curl_post_content($url, $post_data) {
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POST, 1);
if($post_data != ''){
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_HEADER, false);
$file_contents = curl_exec($ch);
curl_close($ch);
return $file_contents;
}
}