php 登陆微博,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

{

"access_token": "SlAV32hkKG",

"remind_in": 3600,

"expires_in": 3600

}

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

话不多说,直接上代码:

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

应用公共文件common.php:

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:

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 "

登录成功

";

}

}

}

模板代码login.html:

微博登录

点击这里进行微博登录

效果图:

3ed37ae7f7c430552a9ffe1385f1cdfc.png

76a268e0701518f460bd9330c36be204.png

faf26e6fc26cf1c1a2db7a9d2b3f09f7.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527154.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php计算结果排序,php-按从数组计算出的值对数组进行排序

我从阵列中的数据库中获得了用户的经纬度我有我的经纬现在,我要计算距离并使用该距离对数据库中的用户进行排序$mylat $_SESSION[lat];$mylng $_SESSION[lng];$statement $pdo->prepare("SELECT * FROM users");$statement->execute();$users $statement-&…

php获取音频的时长,PHP编程获取音频文件时长的方法【基于getid3类】

本文实例讲述了PHP编程获取音频文件时长的方法。分享给大家供大家参考,具体如下:问题:昨天在新增论坛功能的时候,移动端显示音频文件需要知道是多长的音频;具体解决方案如下:首先就是数据库中增加保存音频文…

php strlen ctf,CTF中的PHP反序列化漏洞简单分析

[PHP] 纯文本查看 复制代码<?php class start_gg{public $mod1;public $mod2;public function __construct() #把$mod1赋值为Call类对象{$this->mod1 new Call();}public function __destruct(){$this->mod1->test1();}}class Call{public $mod1;…

2017php行情,2017年蔬菜行情特点及未来蔬菜价格走势分析

2017年蔬菜行情整体特点一、菜价走势前期低迷&#xff0c;后期逐渐回升&#xff1a;1.2017年1&#xff5e;10月的蔬菜平均价处于近3年同期的最低点&#xff1b;2.1&#xff5e;5月菜价创近5年同期最低。南方产区的实心菜花、散菜花、西兰花、团生菜、白萝卜、大白菜&#xff0c…

php毕设,php毕设

于不要钱&#xff01;这里值得提一句&#xff0c;必须是通过牛客网链接新注册的华为云账号&#xff0c;并且要实名认证&#xff0c;24岁以下自动会认定学生身份&#xff0c;这样才可以参加本次活动正好毕设的项目要用到云服务器&#xff0c;这个活动出现的太及时了&#xff0c;…

java实现layui静态表格分页,layui——数据表格分页实例

layui实现数据表格table分页功能&#xff0c;异步加载&#xff0c;表格渲染。总体流程&#xff1a;layui的数据表格设置分页参数开启可以从请求中看到如下图&#xff0c;所以我们需要在后端控制器接收分页数据page和limit进行操作&#xff0c;下面直接上代码分页链接框架&#…

php去掉数字前的符号,php导出excel如何处理使得表格数字值前面的0不被去掉

“首先&#xff0c;我们了解一下excel从web页面上导出的原理。当我们把这些数据发送到客户端时&#xff0c;我们想让客户端程序(浏览器)以excel的格式读取它&#xff0c;所以把mime类型设为&#xff1a;application/vnd.ms-excel&#xff0c;当excel读取文件时会以每个cell的格…

php繁体输出,PHP输出控制功能在简繁体转换中的应用

概要&#xff1a;本文对PHP的输出控制功能进行了简单介绍并对其在简繁体转化中的应用给出了具体思路和实例一 PHP 输出控制功能介绍PHP作为当今流行的脚本语言之一&#xff0c;具有编写简便&#xff0c;执行速度快&#xff0c;扩充性好等优点。PHP的输出信息控制函数可以让你控…

php专家预约系统设计,基于ThinkPHP框架的IT服务预约系统的设计与实现

2014 年 11 月 中国高等教育学会教育信息化分会第十二次学术年会论文集 1 文章编号&#xff1a;1000-5641(2014)00— 基于ThinkPHP 框架的IT 服务预约系统的设计 与实现 何秀全 (上海外国语大学信息技术中心&#xff0c;上海 200083) 摘要&#xff1a;一些高校 IT 部门需要提供…

mysql多列 groupby,MySQL多表查询之GroupBy

需求&#xff1a;根据主键id查询到该顾客最近的一次消费记录SQL代码如下&#xff1a;SELECTcbi.id,cbi.mob,cbi.identity_card,bcil.remark,bcil.orders_no,bcil.brand_no,bcil.with_date,bcil.scoreFROMcustomer_base_info cbiLEFT JOIN(SELECTA.customer_id,A.with_date,A.re…

java j2ssh替代jsch,jsch设置ssh协商算法优先级

最近接触jsch这个包&#xff0c;发现在默认情况下&#xff0c;jsch登录ssh的时候&#xff0c;协商的加密算法和mac算法都不是最高优先级的&#xff0c;这个时候需要手动配置一下算法列表&#xff0c;将强度高的调整在算法列表的前面&#xff0c;这样ssh链接的时候&#xff0c;如…

php验证码图片乱码,php ,验证码图片,乱码

找不出哪里出错了&#xff0c;但是预览时就是会出现一大堆乱码回复讨论(解决方案)乱码是浏览器显示了字符而不是图片么&#xff1f;关闭浏览器重新访问这个地址试试。如果还不行&#xff0c;应该是header的问题。图片输出&#xff0c;最好用UTF-8字符集&#xff0c;因为有可能会…

java 截取汉字首字母,java 取汉字首字母

有时候&#xff0c;可能会有一些类似这样的需求&#xff1a;对于这样的效果&#xff0c;我们可以有类似这样的解决方案&#xff1a;package bys.utils;import java.io.UnsupportedEncodingException;/*** Created by toutou on 2014/2/21*/public class ChineseCharacterHelper…

php给别人写接口,php给客户端写接口记录

通过控制器实现类似Java的工厂模式在主入口文件中通过DIRECTORY_SEPARATOR和dirname(__FILE__)以及url中的参数拼接控制模块文件&#xff0c;通过include 进入子控制模块$l DIRECTORY_SEPARATOR;$dir dirname(__FILE__);$ctrlName trim($operation);$controllerFile "…

html wap php,wap.php

header(Content-type:text/html; Charsetutf-8);/*** 请填写以下配置信息 ***/$appid xxxxx; //https://open.alipay.com 账户中心->密钥管理->开放平台密钥&#xff0c;填写添加了电脑网站支付的应用的APPID$returnUrl http://www.xxx.com/alipay/return.php; //付款成…

php5.0相等,关于php:3个相等

&#xff0c;和有什么区别&#xff1f;我认为使用一个等号表示变量&#xff0c;而使用两个等号表示比较条件&#xff0c;最后使用三个等号表示比较变量的值。看看这个例子...我已经发布了&#xff0c;它将澄清更多的事情..对于高级PHP用户&#xff0c;了解和之间的区别并问自己…

oracle中的自带函数,求完整的ORACLE自带函数文档

最初由 WL_ZCJ 发布[B]create or replace procedure p_97_auto_cron asret_flag number;ret_errmsg varchar2(200);as_area_id number;as_staff_id number;as_begin_time varchar2(20);as_end_time varchar2(20);beginas_staff_id : -1;for rec in (select 1 …

php数组排序综合例子,php数组实例之数组排序

1&#xff0c;php数组排序的小例子例1&#xff0c;sort()、rsort()/asort()、arsort()对数组排序&#xff1a;/p>$array array("b","c","d","a");sort($array);//从低到高排序print_r($array);echo "";rsort($array);//…

oracle 正则表达式匹配日期格式,利用正则表达式找出不合符的日期

很多时候我们的日期可能存放的是字符串类型&#xff0c;在插入的时候也很有可能插入的日期格式不正确&#xff0c;因此我们需要找出这些不合符的日期格式&#xff0c;来此来修正。当然可以使用TO_DATE函数一个一个的转换来找出不合法的日期。ORACLE提供了正则表达式&#xff0c…

cx oracle 中文 u,cx\U Oracle永久连接

我有一个任务是用cxu Oracle为两个进程创建持久连接。在它需要在同一事务中执行来自第一个进程的一些请求&#xff0c;延迟来自第二个进程的一些请求。在如中所述尝试使用DRCP时下一个代码&#xff1a;#coding: utf-8import cx_Oraclecon1 cx_Oracle.connect(user/pass:127.0.…