700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > php新浪微博 登录接口文档 新浪微博的账号登录及PHP api操作

php新浪微博 登录接口文档 新浪微博的账号登录及PHP api操作

时间:2020-09-03 19:02:26

相关推荐

php新浪微博 登录接口文档 新浪微博的账号登录及PHP api操作

新浪微博 的账号登录及api操作,使用oauth 2.0

官方提供的sdk都太过庞大,这是我自己简化的,提供简单的账号登录、获取个人信息、发布微博等功能,如果需要其他功能可以根据官方的api文档自行添加

[文件] sina.php

001

002

/**

003

* PHP Library for

004

*

005

* @author PiscDong (/)

006

*/

007

class sinaPHP

008

{

009

function __construct($client_id, $client_secret, $access_token=NULL){

010

$this->client_id=$client_id;

011

$this->client_secret=$client_secret;

012

$this->access_token=$access_token;

013

}

014

015

function login_url($callback_url){

016

$params=array(

017

'response_type'=>'code',

018

'client_id'=>$this->client_id,

019

'redirect_uri'=>$callback_url

020

);

021

return '/oauth2/authorize?'.http_build_query($params);

022

}

023

024

function access_token($callback_url, $code){

025

$params=array(

026

'grant_type'=>'authorization_code',

027

'code'=>$code,

028

'client_id'=>$this->client_id,

029

'client_secret'=>$this->client_secret,

030

'redirect_uri'=>$callback_url

031

);

032

$url='/oauth2/access_token';

033

return $this->http($url, http_build_query($params), 'POST');

034

}

035

036

/**

037

function access_token_refresh($refresh_token){

038

}

039

**/

040

041

function get_uid(){

042

$params=array();

043

$url='/2/account/get_uid.json';

044

return $this->api($url, $params);

045

}

046

047

function show_user_by_id($uid){

048

$params=array(

049

'uid'=>$uid

050

);

051

$url='/2/users/show.json';

052

return $this->api($url, $params);

053

}

054

055

function statuses_count($ids){

056

$params=array(

057

'ids'=>$ids

058

);

059

$url='/2/statuses/count.json';

060

return $this->api($url, $params);

061

}

062

063

function get_comments_by_sid($id, $count=10, $page=1){

064

$params=array(

065

'id'=>$id,

066

'page'=>$page,

067

'count'=>$count

068

);

069

$url='/2/comments/show.json';

070

return $this->api($url, $params);

071

}

072

073

function repost_timeline($id, $count=10, $page=1){

074

$params=array(

075

'id'=>$id,

076

'page'=>$page,

077

'count'=>$count

078

);

079

$url='/2/statuses/repost_timeline.json';

080

return $this->api($url, $params);

081

}

082

083

function update($img_c, $pic=''){

084

$params=array(

085

'status'=>$img_c

086

);

087

if($pic!='' && is_array($pic)){

088

$url='/2/statuses/upload.json';

089

$params['pic']=$pic;

090

}else{

091

$url='/2/statuses/update.json';

092

}

093

return $this->api($url, $params, 'POST');

094

}

095

096

function user_timeline($uid, $count=10, $page=1){

097

$params=array(

098

'uid'=>$uid,

099

'page'=>$page,

100

'count'=>$count

101

);

102

$url='/2/statuses/user_timeline.json';

103

return $this->api($url, $params);

104

}

105

106

function querymid($id, $type=1, $is_batch=0){

107

$params=array(

108

'id'=>$id,

109

'type'=>$type,

110

'is_batch'=>$is_batch

111

);

112

$url='/2/statuses/querymid.json';

113

return $this->api($url, $params);

114

}

115

116

function api($url, $params, $method='GET'){

117

$params['access_token']=$this->access_token;

118

if($method=='GET'){

119

$result=$this->http($url.'?'.http_build_query($params));

120

}else{

121

if(isset($params['pic'])){

122

uksort($params, 'strcmp');

123

$str_b=uniqid('------------------');

124

$str_m='--'.$str_b;

125

$str_e=$str_m. '--';

126

$body='';

127

foreach($params as $k=>$v){

128

if($k=='pic'){

129

if(is_array($v)){

130

$img_c=$v[2];

131

$img_n=$v[1];

132

}elseif($v{0}=='@'){

133

$url=ltrim($v, '@');

134

$img_c=file_get_contents($url);

135

$url_a=explode('?', basename($url));

136

$img_n=$url_a[0];

137

}

138

$body.=$str_m."\r\n";

139

$body.='Content-Disposition: form-data; name="'.$k.'"; filename="'.$img_n.'"'."\r\n";

140

$body.="Content-Type: image/unknown\r\n\r\n";

141

$body.=$img_c."\r\n";

142

}else{

143

$body.=$str_m."\r\n";

144

$body.='Content-Disposition: form-data; name="'.$k."\"\r\n\r\n";

145

$body.=$v."\r\n";

146

}

147

}

148

$body.=$str_e;

149

$headers[]="Content-Type: multipart/form-data; boundary=".$str_b;

150

$result=$this->http($url, $body, 'POST', $headers);

151

}else{

152

$result=$this->http($url, http_build_query($params), 'POST');

153

}

154

}

155

return $result;

156

}

157

158

function http($url, $postfields='', $method='GET', $headers=array()){

159

$ci=curl_init();

160

curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE);

161

curl_setopt($ci, CURLOPT_RETURNTRANSFER, 1);

162

curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);

163

curl_setopt($ci, CURLOPT_TIMEOUT, 30);

164

if($method=='POST'){

165

curl_setopt($ci, CURLOPT_POST, TRUE);

166

if($postfields!='')curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);

167

}

168

$headers[]="User-Agent: sinaPHP()";

169

curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);

170

curl_setopt($ci, CURLOPT_URL, $url);

171

$response=curl_exec($ci);

172

curl_close($ci);

173

$json_r=array();

174

if($response!='')$json_r=json_decode($response, true);

175

return $json_r;

176

}

177

}

[文件] config.php

1

2

//配置文件

3

header('Content-Type: text/html; charset=UTF-8');

4

5

$sina_k=''; //新浪微博应用App Key

6

$sina_s=''; //新浪微博应用App Secret

7

$callback_url='http://yoururl/callback.php'; //授权回调网址

8

?>

[文件] index.php

01

02

require_once('config.php');

03

require_once('sina.php');

04

05

function getimgp($u){

06

//图片处理

07

$c=@file_get_contents($u);

08

$name=md5($u).'.jpg';

09

$mime='image/unknown';

10

return array($mime, $name, $c);

11

}

12

13

$sina_t=isset($_SESSION['sina_t'])?$_SESSION['sina_t']:'';

14

15

//检查是否已登录

16

if($sina_t!=''){

17

$sina=new sinaPHP($sina_k, $sina_s, $sina_t);

18

19

//获取登录用户id

20

$sina_uid=$c->get_uid();

21

$uid=$sina_uid['uid'];

22

23

//获取登录用户信息

24

$result=$sina->show_user_by_id($uid);

25

var_dump($result);

26

27

/**

28

//发布微博

29

$content='微博内容';

30

$img='/img/baidu_sylogo1.gif';

31

$img_a=getimgp($img);

32

if($img_a[2]!=''){

33

$result=$sina->update($content, $img_a);

34

//发布带图片微博

35

}else{

36

$result=$sina->update($content);

37

//发布纯文字微博

38

}

39

var_dump($result);

40

**/

41

42

/**

43

//微博列表

44

$result=$sina->user_timeline($uid);

45

var_dump($result);

46

**/

47

48

}else{

49

//生成登录链接

50

$sina=new sinaPHP($sina_k, $sina_s);

51

$login_url=$sina->login_url($callback_url);

52

echo '点击进入授权页面';

53

}

54

?>

[文件] callback.php

01

02

//授权回调页面,即配置文件中的$callback_url

03

require_once('config.php');

04

require_once('sina.php');

05

06

if(isset($_GET['code']) && $_GET['code']!=''){

07

$o=new sinaPHP($sina_k, $sina_s);

08

$result=$o->access_token($callback_url, $_GET['code']);

09

}

10

if(isset($result['access_token']) && $result['access_token']!=''){

11

echo '授权完成,请记录

access token:';

12

13

//保存登录信息,此示例中使用session保存

14

$_SESSION['sina_t']=$result['access_token']; //access token

15

}else{

16

echo '授权失败';

17

}

18

echo '

返回';

19

?>

发布php中文网,转载请注明出处,感谢您的尊重!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。