[PHP] 调用微博API 发微博OAuth2.0
在实际测试中出现很多问题,
第一就是按照文档调用ACCESS_TOKEN的时候费老劲啦,因为是编辑线上的,有好多中文空格,没有看出来!整了好久!
第二个就是在调用api发微博的时候出现乱码!必须把发送内容转化成URLcode的格式!
还有就是在index.php文件标红的$URL地址传输的时候问题!
下面看码吧,还有就是封装好的伪造表单提交curl.class.php的类!
文件:weibo.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<a href="https://api.weibo.com/oauth2/authorize?client_id=13465639&response_type=code&redirect_uri=http://www.lpcblog.com/index.php">
微博登录</a> </body>
</html>
文件:index.php
<?php
include('curl.class.php');
$code=$_GET['code'];
//echo $code;
$client_id="13465639";//这是申请的
$client_secret="c8d9fb98f8d56f85d04d1dd2c6323bde";//这是申请的
$grant_type="authorization_code";//这是官方的,不用改,直接传这个
$redirect_uri="http://www.lpcblog.com/index.php";//这是回调地址
//$url="https://api.weibo.com/oauth2/access_token";//用这个地址不行,会报错!还得用下面跟GET传值是的,但是curl传值方式还是POST
$url = "https://api.weibo.com/oauth2/access_token?client_id=".$client_id."&client_secret=".$client_secret."&grant_type=".$grant_type."&redirect_uri=".$redirect_uri."&code=".$code;
$post_data = array(
'grant_type'=>$grant_type,
'client_id'=>$client_id,
'client_secret'=>$client_secret,
'redirect_uri'=>$redirect_uri,
'code'=>$code
);
$str = curl($url,$post_data,'POST');
$str = json_decode($str,true);
//var_dump($str);//获得access_token
//$str['access_token']='2.00XhnHmG00jBVu8a2c4708694K2W2D';
//发送的微博内容
$content = "微博你好,有乱码,调试中!PHP";
$wei_url="https://api.weibo.com/2/statuses/update.json";
$weibo_data = array(
'access_token'=>$str['access_token'],
'status'=>$content
);
$wei_str = curl($wei_url,http_build_query($weibo_data),'POST');
$wei_str = json_decode($wei_str,true);
var_dump($wei_str);
文件(封装的模拟表单提交curl类)
<?php
$cookie_file = tempnam('./temp','cookie'); //创建cookie文件保存的位置
function curl($url,$data=array(),$method,$setcookie=false,$cookie_file=false){
$ch = curl_init();//1.初始化
curl_setopt($ch, CURLOPT_URL, $url); //2.请求地址
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);//3.请求方式
//4.参数如下禁止服务器端的验证
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
//伪装请求来源,绕过防盗
//curl_setopt($ch,CURLOPT_REFERER,"http://wthrcdn.etouch.cn/");
//配置curl解压缩方式(默认的压缩方式)
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Encoding:gzip'));
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
//指明以哪种方式进行访问,利用$_SERVER['HTTP_USER_AGENT'],可以获取
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
if($method=="POST"){//5.post方式的时候添加数据
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
if($setcookie==true){
//如果设置要请求的cookie,那么把cookie值保存在指定的文件中
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
}else{
//就从文件中读取cookie的信息
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$tmpInfo = curl_exec($ch);//获取html内容
if (curl_errno($ch)) {
return curl_error($ch);
}
curl_close($ch);
return $tmpInfo;
}
[PHP] 调用微博API 发微博OAuth2.0的更多相关文章
- RESTful API架构和oauth2.0认证机制(概念版)
1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Roy Fielding的 ...
- IdentityServer4:IdentityServer4+API+Client实践OAuth2.0客户端模式(1)
一.OAuth2.0 1.OAuth2.0概念 OAuth2.0(Open Authorization)是一个开放授权协议:第三方应用不需要接触到用户的账户信息(如用户名密码),通过用户的授权访问用户 ...
- Asp.net Api中使用OAuth2.0实现“客户端验证”
一.实现继承自OAuthAuthorizationServerProvider的类,实现以"客户端验证"方式传入的相关认证和access_token发放. public class ...
- OAuth2.0 微博登陆网站功能的实现(一)获取用户授权及令牌 Access Token
在登陆一些网站的时候,可以选择登陆方式为第三方登陆,例如微博登陆,以爱奇艺为例,进入首页,点击 ”登陆“,会弹出登录框: 除了本站登陆外,还可以选择其他第三方登陆,比如微博登陆.QQ 登陆.微信登陆等 ...
- 微博API使用
新浪微博的API开放平台: http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI IOS和Android都有SDK可以下载,ios的地址: https:// ...
- 使用OAuth2.0访问豆瓣API
如何计算某个用户的access_token过期时间?开发者可以通过两种方式计算:用户授权时,oauth2/access_token接口返回的expires_in值就是access_token的生命周期 ...
- 那些年,我们开发的接口之:QQ登录(OAuth2.0)
那些年,我们开发的接口之:QQ登录(OAuth2.0) 吴剑 2013-06-14 原创文章,转载必须注明出处:http://www.cnblogs.com/wu-jian 前言 开发这些年,做过很多 ...
- QQ登录(OAuth2.0)
QQ登录(OAuth2.0) 那些年,我们开发的接口之:QQ登录(OAuth2.0) 吴剑 2013-06-14 原创文章,转载必须注明出处:http://www.cnblogs.com/wujian ...
- .Net WebApi 实现OAuth2.0认证
现在多数公众平台提供的api都使用OAuth2.0认证模式,最近在搞Android方面的开发,身份认证和权限控制的各方面比较来说,使用OAuth认证的还是比较靠谱,OAuth2.0的协议可以参考htt ...
随机推荐
- ThunderNet :像闪电一样,旷视再出超轻量级检测器,高达267fps | ICCV 2019
论文提出了实时的超轻量级two-stage detector ThunderNet,靠着精心设计的主干网络以及提高特征表达能力的CEM和SAM模块,使用很少的计算量就能超越目前的one-stage d ...
- C#接口多继承方法重名问题
最近实现一个功能需要继承两个接口,然而父类接口有这重名的方法,且方法实现一致.两个父接口均被多个子接口继承,并在类实例中实现.起初,我是通过new重名方法来实现我的功能调用.后被指正,在网上看了一个工 ...
- AI学习笔记:特征工程
一.概述 Andrew Ng:Coming up with features is difficult, time-consuming, requires expert knowledge. &quo ...
- EOS基础全家桶(六)账号管理
简介 本篇我们会学习最基本的账号相关的操作,包括了创建账号和查询,关于账号资源的操作因为必须先部署系统合约,所以我们会留到后面单独写一篇来讲解. 6-EOS基础全家桶(六)账号管理 简介 账号介绍 账 ...
- markdown多张图片并排显示
在markdown中,目前,让图片像这样并排居中的方式主要是两种: : error: 'HelloWorld' is defined but never used (no-unused-vars) at src\views\A.vue:9:8:
原因:
- python 程序双击执行的小技巧
文章更新于:2020-04-03 按照惯例,需要的文件附上链接放在文首. 文件名:ICOFX图标制作软件.7z 文件大小:40.2 MB 下载链接:https://www.lanzous.com/ia ...
- python图片拼接
python图片拼接 这两天看到一张图片,想用python来实现类似的图片拼接 先分析图片: 很明显,这张图片是由多张图片叠加拼接而成 从最后一张开始开始叠加,之后的每张图片都往上平移了一个固定的距 ...
- Flask 入门(十三)
上文提到的Blueprint和厉害吧? 可是有个缺点,就是,还不够框架,因为一个功能不可能就一个文件啊?多文件怎么解决? 还和上文项目架构一样 1.新建两个目录,admin,function 2.ad ...
- es分页条数限制
"error": { "root_cause": [ { "type": "query_phase_execution_excep ...