PHP调用微博接口实现微博登录的方法示例

在平时项目开发过程中,除了注册本网站账号进行登录之外,还可以调用第三方接口进行登录网站。这里以微博登录为例。微博登录包括身份认证、用户关系以及内容传播。允许用户使用微博帐号登录访问第三方网站,分享内容,同步信息。

1、首先需要引导需要授权的用户到如下地址:

https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

如果用户同意授权,页面跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE:

2、接下来要根据上面得到的code来换取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

返回值:

JSON

?


1

2

3

4

5

{

 "access_token": "SlAV32hkKG",

 "remind_in": 3600,

 "expires_in": 3600

}

3、最后,使用获得的OAuth2.0 Access Token调用API,获取用户身份,完成用户的登录。

话不多说,直接上代码:

为了方便,我们先将get和post封装到application下的common.php中:

应用公共文件common.php:

?


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

49

50

51

52

53

function get( $url, $_header = NULL )

{

  $curl = curl_init();

  //curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, false);

  if( stripos($url, https://) !==FALSE )

  {

    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

  }

  curl_setopt($curl, CURLOPT_URL, $url);

  curl_setopt($curl, CURLOPT_HEADER, 0);

  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

  if ( $_header != NULL )

  {

    curl_setopt($curl, CURLOPT_HTTPHEADER, $_header);

  }

  $ret  = curl_exec($curl);

  $info  = curl_getinfo($curl);

  curl_close($curl);

  if( intval( $info["http_code"] ) == 200 )

  {

    return $ret;

  }

  return false;

}

/*

 * post method

 */

function post( $url, $param )

{

   $oCurl = curl_init ();

  curl_setopt ( $oCurl, CURLOPT_SAFE_UPLOAD, false);

  if (stripos ( $url, "https://" ) !== FALSE) {

    curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYPEER, FALSE );

    curl_setopt ( $oCurl, CURLOPT_SSL_VERIFYHOST, false );

  }

  

  curl_setopt ( $oCurl, CURLOPT_URL, $url );

  curl_setopt ( $oCurl, CURLOPT_RETURNTRANSFER, 1 );

  curl_setopt ( $oCurl, CURLOPT_POST, true );

  curl_setopt ( $oCurl, CURLOPT_POSTFIELDS, $param );

  $sContent = curl_exec ( $oCurl );

  $aStatus = curl_getinfo ( $oCurl );

  curl_close ( $oCurl );

  if (intval ( $aStatus ["http_code"] ) == 200) {

    return $sContent;

  } else {

    return false;

  }

}

控制器处理代码Login.php:

?


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

class Login extends \think\Controller

{

  public function index()

  {

    $key = "****";

    $redirect_uri = "***微博应用安全域名***/?backurl=***项目本地域名***/home/login/webLogin?";

    //授权后将页面重定向到本地项目

    $redirect_uri = urlencode($redirect_uri);

    $wb_url = "https://api.weibo.com/oauth2/authorize?client_id={$key}&response_type=code&redirect_uri={$redirect_uri}";

    $this -> assign(‘wb_url‘,$wb_url);

    return view(‘login‘);

  }

  public function webLogin(){

    $key = "*****";

    //接收code值

    $code = input(‘get.code‘);

    //换取Access Token: post方式请求  替换参数: client_id, client_secret,redirect_uri, code

    $secret = "********";

    $redirect_uri = "********";

    $url = "https://api.weibo.com/oauth2/access_token?client_id={$key}&client_secret={$secret}&grant_type=authorization_code&redirect_uri={$redirect_uri}&code={$code}";

    $token = post($url, array());

    $token = json_decode($token, true);

    //获取用户信息 : get方法,替换参数: access_token, uid

    $url = "https://api.weibo.com/2/users/show.json?access_token={$token[‘access_token‘]}&uid={$token[‘uid‘]}";

    $info = get($url);

    if($info){

      echo "<p>登录成功</p>";

    }

  }

}

模板代码login.html:

?


1

2

3

4

5

6

7

8

9

10

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title>微博登录</title>

</head>

<body>

<a href="{$wb_url}" rel="external nofollow" >点击这里进行微博登录</a>

</body>

</html>

效果图:

以上就是本文的全部内容

原文地址:https://www.cnblogs.com/xwyphp/p/9698963.html

时间: 2024-08-27 03:30:12

PHP调用微博接口实现微博登录的方法示例的相关文章

用juery的ajax方法调用aspx.cs页面中的webmethod方法示例

juery的ajax调用aspx.cs页面中的webmethod方法:首先在 aspx.cs文件里建一个公开的静态方法,然后加上WebMethod属性,具体实现如下,感兴趣的朋友可以参考下哈,希望对大家有所帮助 首先在 aspx.cs文件里建一个公开的静态方法,然后加上WebMethod属性. 如: [WebMethod] public static string GetUserName() { //...... } 如果要在这个方法里操作session,那还得将WebMethod的Enable

c#调用dll接口传递utf-8字串方法

1. 起源: VCU10之视频下载模块,采用纯python实现,c++代码调用pythonrun.h配置python运行环境启动python模块,以使界面UI能够使用其中功能. 棘手问题!用去一天时间反复打印日志,验证所传字串区别,以期望发现问题定位问题,直至下班前始有灵感. 验证发现,非中文字符可以正常下载,中文字符下载解析失败,当时即想到可能是字串不统一所致,就在python代码中做字串转换处理,均不奏效. 原接口封装代码如下: [DllImport("VideoDownloader&quo

C#调用默认浏览器打开网页的几种方法

CSharp调用默认浏览器打开网页的几种方法 示例界面: 方法一:从注册表中读取默认浏览器可执行文件路径 private void button1_Click(object sender, EventArgs e) { //从注册表中读取默认浏览器可执行文件路径 RegistryKey key = Registry.ClassesRoot.OpenSubKey(@"http\shell\open\command\"); string s = key.GetValue("&qu

(转)C#调用默认浏览器打开网页的几种方法

转载,原文地址:http://blog.csdn.net/testcs_dn/article/details/42246969 CSharp调用默认浏览器打开网页的几种方法 示例界面: 方法一:从注册表中读取默认浏览器可执行文件路径 [csharp] view plain copy private void button1_Click(object sender, EventArgs e) { //从注册表中读取默认浏览器可执行文件路径 RegistryKey key = Registry.Cl

Java调用 新浪微博API 接口发微博,逐条讲解,绝对清晰

最近要做个课程设计,使用微博控制树莓派,树莓派再控制发光二极管的亮和灭,主要设计分两层,上层是用Java调用新浪微博API来实现对微博旳监听,当我的微博被回复时能够自动读取评论内容,并根据评论的指令内容来决定树莓派的控制动作.下层是用C语言调用操作系统底层接口来实现用树莓派GPIO接口控制发光二极管的闪烁.亮灭. 由于网上教程都很老了,最近微博接口发生了很多变化,所以我决定全新写一篇详细的博文,如若能对您起到帮助作用,那将是我莫大的荣幸.同时我非常希望能与您交流,有问题请在评论里回复我. 本文将

本页面用来演示如何通过JS SDK,创建完整的QQ登录流程,并调用openapi接口

QQ登录将用户信息存储在cookie中,命名为__qc__k ,请不要占用 __qc__k : 1) :: 在页面顶部引入JS SDK库: 将"js?"后面的appid参数(示例代码中的:100229030)替换成您自己的appid: 示例代码:<script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" data-app

iOS 类似简单的第三方微博客户端,可进行登录微博浏览相关信息

Demo地址:https://github.com/ChenNan-FRAM/Fenvo (如果你觉得有用麻烦star一下感激不尽) Fenvo Objective-C, iOS 类似简单的第三方微博客户端,可进行登录微博浏览相关信息.在这个过程我是遇到很多的问题,但是大部分都顺利解决了,相信如果你的项目有类似的地方我的项目里面也能够给你提供一定的帮助,如果需要,可以给我留言或者在Github上联系我. UI简陋,暂未完善.有UI大师指点就最好了. 这个应用我是从开始学后为了实践自己的能力一直在

h5调用底层接口知识总结

本文标签: h5调用底层接口 h5 h5调用本地摄像头 前端时间使用HTML5做了一个WEB端APP,其中用到了H5页面调用手机摄像头的功能,当时也是花了不少时间去研究.最终是采用了HTML5plus(HTML5+)的方式完成了该功能,现将具体方法简单介绍下,并讲解下使用的注意事项.放在服务器上然后浏览就可以了,只支持Chrome和Safari核的浏览器,QQ浏览器,Chrome,Safari浏览器都可以.在不同的手机和浏览器上面展现的方式不一样.这是html5官方文档地址,里面有关于h5或js

h5调用底层接口的一些知识

本文作者祈澈姑娘,转载请标记转载出处,谢谢. 之前接触过这方面的知识,一直想写一些关于代码的文字,但考虑到浪费时间,又不具备大神的实力,也不想去把别人的代码照搬过来,所以一直都是空白着的,今天敲代码的时候,有了一个比较好的想法,第一,定位在学习这一块,去学习一些领域的新知识,并分享自己每天的学习成果,第二,总结工作中遇到的代码,解决的问题,拿出自己的demo截图,做出一些文字说明解释,相信通过这两个途径,能够让自己取得更大的发展空间. h5调用本地摄像头 前端时间使用HTML5做了一个WEB端A