php 模拟新浪微博oauth2.0授权获取access_token (跳过授权页)(改)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?
session_start();
require_once 'sina/saetv2.ex.class.php';
$o = new SaeTOAuthV2 ( WB_AKEY, WB_SKEY);
$oauth_url = $o->getAuthorizeURL (WB_CALLBACK_URL);
/*
* 要提交的数据
*
*/

$postdata ['client_id'] = WB_AKEY;
$postdata ['response_type'] = 'code';
$postdata ['redirect_uri'] = urlencode(WB_CALLBACK_URL);
$postdata ['action'] = 'submit';
//$postdata ['userId'] = '用户名';//如果选择cookies登录可不填用户名和密码
//$postdata ['passwd'] = '密码';
$postdata ['isLoginSina'] = 0;
$postdata ['from'] = '';
$postdata ['regCallback'] = '';
$postdata ['state'] = '';
$postdata ['ticket'] = '';
$postdata ['withOfficalFlag'] = 0;
//把提交的数据拼接字符串
$postdata_str = '';
foreach ( $postdata as $dk => $dv ) {
$postdata_str .= $dk . '=' . ($dv) . "&";
}
$postdata_str = trim ( $postdata_str, '&' );
$ch = curl_init ();
$user_agent = 'Mozilla/5.0 (Windows; U;
Windows NT 5.1; ru; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9';

$cookie_file=tempnam('temp','cookie');
curl_setopt ( $ch, CURLOPT_URL, "https://api.weibo.com/oauth2/authorize" );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1 );
curl_setopt ( $ch, CURLOPT_REFERER, $oauth_url );
//curl_setopt ( $ch, CURLOPT_USERAGENT, $user_agent );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $postdata_str );
//使用cookie传值
curl_setopt ( $ch, CURLOPT_COOKIE,'*******');//*******填写你的cookies,如果选择用户名和密码登录则可以忽略
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$response = curl_exec($ch);
$last_url = curl_getinfo ( $ch, CURLINFO_EFFECTIVE_URL );
//$response = str_replace('/oauth2/','https://api.weibo.com/oauth2/',$response);
//print_r($response);
print_r($_REQUEST);

我们可以再输出中看到返回的access_token、uid等数据,并且查看该微博已经授权appkey对应的应用。这段代码其实没有什么很大作用,因为还不能自动授权,不过还可以制作自己的微博授权登录界面。如有问题可留言给我,记得留下你的邮箱方便回复。
本文参考http://hi.baidu.com/bing008ok/item/0a2bce068d1f8e0aeafe385d