基于PHP实现发微博动态代码实例


Posted in PHP onDecember 11, 2020

首先,肯定是注册成为开发者新浪微博开放平台

选择网站应用,填写一些基本信息

填完后在‘我的应用'中,会看到刚创建的应用信息,我们只是简单的测试一下,所以其他复杂的注册信息都不用填写,有这些就够了

很重要的一点,回调地址填写↓,回调地址是微博返回数据的地址,一定要填写完全一致

接下来,就是代码部分了:

随便创建一个页面,可以是一个a标签,或者自己找一个新浪的图标,随你喜欢

<a href='https://api.weibo.com/oauth2/authorize?client_id=2259374069&redirect_uri=http://www.huazi.com/good/login.php'>微博登录</a>

client_id 就是填写完应用信息后获得的App Key

redirect_uri 就是高级信息里面的回调地址

浏览器输入这个页面的地址,点击,会跳转到授权页面,点击授权并登陆

到回调地址页面,这是,回调地址会返回一个临时code,我们可以用code来换取token

<?php
header('content-type:text/html;charset=utf-8');
$code = $_GET['code'];  //获取code
$url = 'https://api.weibo.com/oauth2/access_token';  //获取token的地址
$client_id = '2259374069';  //App Key
$client_secret = '你的App Secret';  //App Secret
$grant_type = 'authorization_code';  //获取类型
$redirect_uri = 'http://www.huazi.com/good/login.php';  //回调地址
 
// echo $code;die;
 
 
//模拟登陆数据
  $vars['client_id'] = $client_id;
  $vars['client_secret'] = $client_secret;
  $vars['grant_type'] = $grant_type;
  $vars['code'] = $code;
  $vars['redirect_uri'] = $redirect_uri;
 
//使用CURL模拟登录信息
  $method_post = true;
  $ch =curl_init();
  $params[CURLOPT_URL] = $url;
  $params[CURLOPT_HEADER] = false;
  $params[CURLOPT_RETURNTRANSFER] = true;
  $params[CURLOPT_FOLLOWLOCATION] = true;
  $params[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0';
  $params[CURLOPT_SSL_VERIFYPEER] = false;
  $params[CURLOPT_SSL_VERIFYHOST] = false;
 
//格式化地址信息  
  $postfields = '';
  foreach ($vars as $key => $value) {
    $postfields .= urlencode($key) . '=' . urlencode($value) . '&';
  }
 
  $params[CURLOPT_POST] = true;
  $params[CURLOPT_POSTFIELDS] =$postfields;
 
  curl_setopt_array($ch, $params);
  $content = curl_exec($ch);
 
  //如果发生curl错误可以使用curl_error查看错误信息
  // var_dump(curl_error($ch));
  echo $content;
  // echo "<br>";
  // echo "<pre>";
  // print_r(json_decode($content,true));

至此,就获取到了我们需要的token信息,已经实现了新浪第三方登录

把token取出来,通过token可以操作很多东西,传不同的参数和URL就可以,我以发微博为例

<?php
header('content-type:text/html;charset=utf-8');
$url = 'https://api.weibo.com/2/statuses/update.json';
$access_token = '刚才获取的token';
$status = '我的测试微博'; //你要发的微博内容
 
//模拟登陆数据
 
  $vars['access_token'] = $access_token;
  $vars['status'] = $status;
 
  $method_post = true;
  $ch =curl_init();
  $params[CURLOPT_URL] = $url;
  $params[CURLOPT_HEADER] = false;
  $params[CURLOPT_RETURNTRANSFER] = true;
  $params[CURLOPT_FOLLOWLOCATION] = true;
  $params[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0';
  $params[CURLOPT_SSL_VERIFYPEER] = false;
  $params[CURLOPT_SSL_VERIFYHOST] = false;
  $postfields = '';
 
  foreach ($vars as $key => $value) {
    $postfields .= urlencode($key) . '=' . urlencode($value) . '&';
  }
 
  $params[CURLOPT_POST] = true;
  $params[CURLOPT_POSTFIELDS] =$postfields;
 
  curl_setopt_array($ch, $params);
  $content = curl_exec($ch);
 
  // var_dump(curl_error($ch));
  echo $content;
  echo "<br>";
  echo "<pre>";
  print_r(json_decode($content,true));

我们发现,这段代码下面的部分跟上段代码一样,没错,就是这样的

在浏览起输入这个页面的地址,再去看看你的微博,是不是成功发了一条微博?

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

PHP 相关文章推荐
自己前几天写的无限分类类
Feb 14 PHP
PHP最常用的ini函数分析 针对PHP.ini配置文件
Apr 22 PHP
php数组对百万数据进行排除重复数据的实现代码
Jun 08 PHP
PHP 飞信好友免费短信API接口开源版
Jul 22 PHP
mysql,mysqli,PDO的各自不同介绍
Sep 19 PHP
PHP操作Memcache实例介绍
Jun 14 PHP
CI(Codeigniter)的Setting增强配置类实例
Jan 06 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
Mar 03 PHP
浅谈PHP中其他类型转化为Bool类型
Mar 28 PHP
PHP书写格式详解(必看)
May 23 PHP
完美的php分页类
Oct 24 PHP
TP5框架安全机制实例分析
Apr 05 PHP
PHP isset empty函数相关面试题及解析
Dec 11 #PHP
PHP数组实际占用内存大小原理解析
Dec 11 #PHP
PHP基于ip2long实现IP转换整形
Dec 11 #PHP
PHP哈希表实现算法原理解析
Dec 11 #PHP
PHP解决高并发的优化方案实例
Dec 10 #PHP
WordPress伪静态规则设置代码实例
Dec 10 #PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
Dec 10 #PHP
You might like
PHP Ajax中文乱码问题解决方法
2009/02/27 PHP
基于OpenCV的PHP图像人脸识别技术
2009/10/11 PHP
PHP导入Excel到MySQL的方法
2011/04/23 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
PHP使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
Nodejs核心模块之net和http的使用详解
2019/04/02 NodeJs
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[00:15]TI9观赛名额抽取
2019/07/10 DOTA
处理Python中的URLError异常的方法
2015/04/30 Python
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
详解python校验SQL脚本命名规则
2019/03/22 Python
Django ORM filter() 的运用详解
2020/05/14 Python
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
给老婆的婚前保证书
2014/02/01 职场文书
五一劳动节活动记录
2014/03/23 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
主持人开幕词
2015/01/29 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
会计工作自我鉴定范文
2019/06/21 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js
如何解决php-fpm启动不了问题
2021/11/17 PHP
Python中如何处理常见报错
2022/01/18 Python