微博开放平台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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android toArray

    Android toArrayArrayList提供了一个将List转为数组的一个非常方便的方法toArray。toArray有两个重载的方法:1.list.toArray();2.list.toArray(T[]a);对于第一个重载方法,是将list直接转为Object[]数组;第二种方法是将list转化为你所需要类型的数组,当然我们用的时候会转化为与list内容相同的类型。不明真像的同学喜欢用第

    2022年5月15日
    33
  • SecureCRTPortable – 破解

    SecureCRTPortable – 破解问题总结:关闭SecureCRT时报错解决方法:o.删除SecureCRT.dmp(C:\用户\yalin.lu\AppData\Roaming)。o.打开命令提示符,输入命令“regedit”打开注册表编辑器,Ctrl+F搜索“VanDyke”,注意是“全字匹配”,将搜索到的Vandyke文件夹都删掉。HKEY_CURRENT_USER>Software>VanDykeH…

    2022年4月26日
    82
  • 进程间通信方式——消息队列

    进程间通信方式——消息队列与消息队列的三个数据结构;和消息队列相关的函数;消息队列的工作模式。

    2022年10月9日
    4
  • js 手机号码正则

    js 手机号码正则varphone=document.getElementById(‘phone’).value;if(!(/^1[3456789]\d{9}$/.test(phone))){alert(“手机号码有误,请重填”);returnfalse;}varphone=document.getElementById(‘phon…

    2022年6月11日
    69
  • Git 常用指令使用说明「建议收藏」

    Git 常用指令使用说明「建议收藏」Git作为一个版本控制工具的后起之秀,目前已经呈现替代SVN的趋势,如果你现在还在使用SVN等版本控制工具,那说明你已经OUT了!Git 是Linux内核的发明人 大名鼎鼎的Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开源码版本控制工具。1.Git基本概念介绍     1.1.本地库和远程库           本地库(如用户电脑端的Git库)中有本地分支(dev/

    2022年6月17日
    31
  • qt 5.12.1 下载安装详细教程

    qt 5.12.1 下载安装详细教程前言:Qt是一个跨平台的C++图形界面应用程序框架。它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序。Qt很容易扩展,并且允许真正地组件编程。基本上,Qt同XWindow上的Motif,Openwin,GTK等图形界面库以及Windows平台上的MFC、OWL、VCL、ATL是同类型的东西。一:下载地址http://download.qt.io/of…

    2022年5月13日
    56

发表回复

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

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