微博开放平台api使用[通俗易懂]

微博开放平台api使用[通俗易懂]前言:微博开放平台提供了微博数据的api接口,不仅可以直接通过api调用微博服务发布微博查询微博,更重要的是,可以在自己的网站上获得新浪微博api的授权,调用微博的某些内容,就好像我们再网站中看到好文

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言:微博开放平台提供了微博数据的api接口,不仅可以直接通过api调用微博服务发布微博查询微博,更重要的是,可以在自己的网站上获得新浪微博api的授权,调用微博的某些内容,就好像我们再网站中看到好文章要分享到微博或者其他社交网站中一样,非常方便。

下面就来探秘一番。
1.注册开发者并获取app key 和 app secret
  百度很容易找到微博开放平台的入口,登录自己的微博账号,点击账号头像,会提示编辑开发者信息。
  
微博开放平台api使用[通俗易懂]
  可以看到如下的页面,只需要按照提示填写,其中紧急联系人可以填自己,网站无所谓,填百度也行。
  
微博开放平台api使用[通俗易懂]
提交之后,你需要在我的应用下实名认证,上传图片时请耐心等待,有点慢而且没有上传进度。上传之后点击返回,可以跳转到新页面:
微博开放平台api使用[通俗易懂]

 按照需要选择,然后创建自己的应用。至于这里面各种应用名词是什么意思我也不是很清楚,用着用着就熟了。我选择的是其他应用
微博开放平台api使用[通俗易懂]

 
微博开放平台api使用[通俗易懂]
 创建之后,会收到邮件,含有app key 和 app secret 。这是获取授权的关键。
2.获取token
  首页 
http://open.weibo.com/ 点击api接口,会跳转到api接口说明文档页面,你会发现api有很多功能,包括创建微博,删除微博,关注/取消关注等非常多的接口,但是每个接口都需要token才能访问。token从何而来?
首先你需要获取一个code码,其次你需要有个调用接口的网址(因为我申请的是网页应用)。
设置关联的网址:
微博开放平台api使用[通俗易懂]
点击你的应用名,然后在左边的菜单中找到高级信息,然后就可以编辑了。
微博开放平台api使用[通俗易懂]
 
点击api接口下
微博开放平台api使用[通俗易懂],进入授权接口查看用法
微博开放平台api使用[通俗易懂]

按照实例,你需要发一个get请求包含client_id和redirect_uri。可以直接拼接。
https://api.weibo.com/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/response&response_type=code

其中,client_id是你申请的app key,redirect_uri是自己要回调接口的地址,api会原样返回。可以直接在浏览器输入url,如下图所示:
微博开放平台api使用[通俗易懂]
这个页面是否有些熟悉呢?授权之后,网页会跳回redirect_uri页面,并且在url后面拼上code。于是code就有了
接下来获取授权token,授权接口第二个:
页面上有详细的用法,发送http post请求,我用java的http-client4.5来做的,事实上其他方式也行。
微博开放平台api使用[通俗易懂]

代码写的比较烂,但是多少是可用的。5个必备参数值。我们已经获取了最后两个,前面两个在邮件中。代码就不贴出来了。看管自己敲一敲有利于熟悉用法,以后少不了发各种请求。
至此,我们成功授权,返回值里有需要的token值,如果返回error,请查看错误提示,或者百度错误信息。
此后只需要带着token,就可以请求到各种接口,虽然有次数限制,不过如果正常使用应该足够了。
 
后记:
1.本来我是想做一些类似于爬虫的功能,想在微博开放接口中,拿点数据,不过纵览api,多数是基于网页应用的微博分享的功能,
  比如获取自己的微博,获取粉丝,发微博,关注等,不是自己需要的。
  
微博开放平台api使用[通俗易懂]
 2.前面提了,微博开放api主要是用于第三方网站或者app接入微博,用微博登陆或者通过api做微博分享,所以有这方面需求的完全可以深入研究一下api接口。
 3.api接口中,get请求都可以直接拼接字符串获取,但是对于刚刚请求授权的get请求来说,它是需要用户的账号同意授权给应用,所以必须要登录用户账号,如果浏览器保有微博登陆后的cookie,那么浏览器能自动登录从而拿到目标code,如果没有就会提示登录
    
微博开放平台api使用[通俗易懂]

    因而这个请求适合在浏览器上做,因为用代码发请求还要模拟登录,或者使用登录后的cookie,非常麻烦。不过api中其他get请求不会有这个问题,直接带token即可。模拟登录可以使用selenium的webdriver 拿到 cookie,其他模拟登录的方式普遍非常麻烦。

    当然,如果你内嵌到网站上,那登录就是用户的事了。

 4.以发送微博 为例:
@Test
    public void test2() throws IOException {
        CloseableHttpClient client = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        RequestConfig config =
                RequestConfig.custom().setConnectTimeout(10000)
                        .setSocketTimeout(10000).build();
        HttpPost post = new HttpPost("https://api.weibo.com/2/statuses/update.json");
        post.setConfig(config);
        List<NameValuePair> pairs = new ArrayList<>();
        BasicNameValuePair p1 = new BasicNameValuePair("access_token","");
        String content = "本条微博通过微博开放接口发送";
        BasicNameValuePair p2 = new BasicNameValuePair("status",
                content);
        BasicNameValuePair p3 = new BasicNameValuePair("visible","0");
        pairs.add(p1);
        pairs.add(p2);
        pairs.add(p3);
        post.setEntity(new UrlEncodedFormEntity(pairs,"utf-8"));
        response = client.execute(post);
        HttpEntity entities = response.getEntity();
        System.out.println(EntityUtils.toString(entities,"UTF-8"));
    }

微博开放平台api使用[通俗易懂]

 5.如果将开放api嵌入自己的网站中,大概做法是:在分享微博按钮(第三方登陆按钮)上,发送微博授权认证,用户在网页上点击授权后,后台就获得了code,以及能根据code获取token。此后如果需要提取微博的用户名,也就可以直接在后台发请求。如果是分享到微博,也可以通过api来做到。
 
如果以后实践中用到了这些功能,再做记录,本文到此为止。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166859.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Centos 7镜像官网下载

    Centos 7镜像官网下载换了mac,安装虚拟机到时候,下载Centos7镜像,发现到官网下载试了好几个国内镜像,发现根本下不下来,下载进度一直是0.0,可能是网络问题吧,可是我试了家里到Wi-Fi,公司到Wi-Fi,也连了自己手机分出来的热点,发现还是一样,我不禁纳闷了,以前在windows上下载过到,虽然很大,但是花费一些时间还是能下载下来到。于是我试了一下下面这个清华大学的镜像,发现可以下载,并且下载速度非常快,…

    2022年10月20日
    1
  • Linux错误 E325: 注意 发现交换文件

    Linux错误 E325: 注意 发现交换文件方法1、恢复文件:vim-rnginx.conf恢复以后把.swap文件删掉,再打开时就不会用提示,注意.swap文件是个隐藏文件。可用:la查看。以.开头的是隐藏文件。方法2、ls-a查询隐藏文件,删除后缀名为.swp的文件删除rm-f文件名.swp转载:https://blog.csdn.net/u012686154/article/details…

    2022年5月18日
    43
  • ResponseBody浅析[通俗易懂]

    ResponseBody浅析[通俗易懂]@[TOC]ResponseBody浅析欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:…

    2022年5月28日
    43
  • js三目运算符

    js三目运算符js三目运算符js三目运算符的正常表达为variable=boolean_expression?true_value:false_value;当boolean_expression传入的不是表达式而是变量时,是如何判断的?在es5文档中找到了解释:先将boolean_expression进行计算拿到结果赋给lref,然后根据ToBoolean(lref)拿到是tr

    2022年6月29日
    25
  • vdbench的使用教程——裸盘测试和文件系统测试

    一、vdbench简介  vdbench是一个I/O工作负载生成器,用于验证数据完整性和度量直接附加和网络连接的存储的性能。它是一个免费的工具,容易使用,而且常常用于测试和基准测试。可以使用vdbench测试磁盘和文件系统的读写性能。vdbench中常用的一些名词解释:HD  主机定义 SD  存储定义  WD 工作负载定义 RD  运行定义 FSD…

    2022年4月3日
    1.1K
  • tomcat java_maven和tomcat的关系

    tomcat java_maven和tomcat的关系缓存什么是缓存[Cache]存在内存中的临时数据将用户经常查询的数据放在缓存(内存)中,用户去查询数据的时候就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。为什么使用缓存减少和数据库的数据交换次数,较少系统开销,提高系统效率什么样的数据库能使用缓存经常查询并且不经常改变的数据Mybatis缓存MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制。默认情况下,只启用了本地的会话缓存,它仅

    2022年8月8日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号