微博开放平台api使用

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

下面就来探秘一番。

1.注册开发者并获取app key 和 app secret

百度很容易找到微博开放平台的入口,登录自己的微博账号,点击账号头像,会提示编辑开发者信息。

可以看到如下的页面,只需要按照提示填写,其中紧急联系人可以填自己,网站无所谓,填百度也行。

提交之后,你需要在我的应用下实名认证,上传图片时请耐心等待,有点慢而且没有上传进度。上传之后点击返回,可以跳转到新页面:

按照需要选择,然后创建自己的应用。至于这里面各种应用名词是什么意思我也不是很清楚,用着用着就熟了。我选择的是其他应用

创建之后,会收到邮件,含有app key 和 app secret 。这是获取授权的关键。

2.获取token

首页 http://open.weibo.com/ 点击api接口,会跳转到api接口说明文档页面,你会发现api有很多功能,包括创建微博,删除微博,关注/取消关注等非常多的接口,但是每个接口都需要token才能访问。token从何而来?

首先你需要获取一个code码,其次你需要有个调用接口的网址(因为我申请的是网页应用)。

设置关联的网址:

点击你的应用名,然后在左边的菜单中找到高级信息,然后就可以编辑了。

点击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,如下图所示:

这个页面是否有些熟悉呢?授权之后,网页会跳回redirect_uri页面,并且在url后面拼上code。于是code就有了

接下来获取授权token,授权接口第二个:

http://open.weibo.com/wiki/OAuth2/access_token

页面上有详细的用法,发送http post请求,我用java的http-client4.5来做的,事实上其他方式也行。

代码写的比较烂,但是多少是可用的。5个必备参数值。我们已经获取了最后两个,前面两个在邮件中。代码就不贴出来了。看管自己敲一敲有利于熟悉用法,以后少不了发各种请求。

至此,我们成功授权,返回值里有需要的token值,如果返回error,请查看错误提示,或者百度错误信息。

此后只需要带着token,就可以请求到各种接口,虽然有次数限制,不过如果正常使用应该足够了。

后记:

1.本来我是想做一些类似于爬虫的功能,想在微博开放接口中,拿点数据,不过纵览api,多数是基于网页应用的微博分享的功能,

比如获取自己的微博,获取粉丝,发微博,关注等,不是自己需要的。

2.前面提了,微博开放api主要是用于第三方网站或者app接入微博,用微博登陆或者通过api做微博分享,所以有这方面需求的完全可以深入研究一下api接口。

3.api接口中,get请求都可以直接拼接字符串获取,但是对于刚刚请求授权的get请求来说,它是需要用户的账号同意授权给应用,所以必须要登录用户账号,如果浏览器保有微博登陆后的cookie,那么浏览器能自动登录从而拿到目标code,如果没有就会提示登录

因而这个请求适合在浏览器上做,因为用代码发请求还要模拟登录,或者使用登录后的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"));
    }

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

如果以后实践中用到了这些功能,再做记录,本文到此为止。

来自为知笔记(Wiz)

时间: 2024-08-09 10:30:34

微博开放平台api使用的相关文章

微博开放平台开发(一)获取access_token

因为工作需要,接触到微博开放平台开发.特做此记录方便查用. 一.准备. 1.微博账号.注册很容易. 2.微博账号成为开发者. 登录微博开放平台  登录你注册的账号,然后进入管理中心完善开发者基本信息和身份认证. 这个时候,还需要浏览一下微博开放平台的文档,来了解一些这个开放平台的一些规范性的名词. 每个链接都点进去看看,顺便看看微博API文档,你会发现,里边有介绍说,一些接口的调用需要获取access_token.本文就是要实现这个目标. 二.创建应用. 比如咱们要开发一个网站,然后在这个网站里

关于微博开放平台Oauth2.0接入网站应用

关于什么是微博开放平台及微博开放平台能做什么,咱就不做搜索引擎的搬运工了 这里直接给个链接介绍:微博开放平台 本文只是抛砖引玉,讲讲微博开放平台的基本用法,适合没接触过开放平台的朋友入门学习,老鸟就略过啦~ 举例(新浪)微博开放平台:http://open.weibo.com/ (这里是官网) 先来看看关于微博开放平的台网站接入: 什么是网站接入? 举几个例子,比如我们经常会看到各大网站可以直接使用QQ,微博,微信等账号直接登录.各种文章.游戏.页面的一键分享.同步到QQ空间.微博等社交工具的实

新浪微博开放平台API

关于新浪微博开放平台有很多问题,网上文档写的不是很清楚,授权机制把我给难住了 不清楚怎么回事一直报没有权限 EMAIL给开发人员也没回应 偶然尝试到一个方法  States返回了成功 如下代码: 1.在head 引用 <meta property="wb:webmaster" content="8998f19501c5a01c" /> <script src=" http://tjs.sjs.sinajs.cn/open/api/js/w

百度AI开放平台- API实战调用

百度AI开放平台- API实战调用 一.      前言 首先说一下项目需求. 两个用户,分别上传了两段不同的文字,要计算两段文字相似度有多少,匹配数据库中的符合条件的数据,初步估计列出来会有60-100条左右,不会更多,只会更少.最终的需求是:从这些匹配结果中找到相似度较高的那些条目. 自己编写算法来实现是一个很大的工程,涉及到自然语言处理的一些方面,比较复杂.于是上网搜了搜,发现百度开放平台的自然语言处理可以免费调用,而且每天有10W的调用次数,对我的小项目来说正好满足.但是,在往下翻的时候

各开放平台API接口通用 SDK 前言

最近两年一直在做API接口相关的工作,在平时工作中以及网上看到很多刚接触API接口调用的新人一开始会感到很不适应,包括自己刚开始做API接口调用的相关工作时,也是比较抓狂的,所有写一序列文章把之前的工作做个总结,二来写一个通用SDK把之前涉及到的代码封装成类库,以便以后可以更好地使用.三来对一些有需要的朋友,比如刚接触API接口调用的朋友来说,希望可以给他们提供一些帮助,一起交流,共同成长,一起进步. 今天这篇文章主要是谈一下自己的构想,SDK产品的构思,也希望园内的朋友提出自己宝贵的意见,如果

各开放平台API接口通用SDK序列文章 前言

最近两年一直在做API接口相关的工作,在平时工作中以及网上看到很多刚接触API接口调用的新人一开始会感到很不适应,要看的文档一大堆,自己要调用的接口找不着,或都找着了不知道怎么去调用,记得包括自己刚开始做API接口调用的相关工作时,也是比较抓狂的,也是硬着头皮去看各种文档,熟悉代码,在网上不断地去查找资料.所以决定写一序列文章把之前做的API接口相关的工作做个总结,二来写一个通用SDK把之前涉及到的代码封装成类库,以便以后可以更好地使用.就不用再重创轮子了,三来对一些有需要的朋友,比如刚接触AP

中国气象网 气象数据开放平台 API使用方法 (Android)

由于要做个天气应用,需要找个天气的API.上网上搜了下都是那几个,而且基本都过时了.百度有个天气API,不过貌似只能提供当天的.网上提到的中国气象接口的文章,大都用的时旧API,有的被封了,有的永远停到了2014年3月24不更新了. 后来找到了中国天气的新接口,已经升级成气象数据开放平台了http://openweather.weather.com.cn/.没有开发者社区或论坛什么的,只能自己琢磨他的文档了(感觉没人维护..). 经过几个疑难点卡住后,总算调通了.现分享给大家. 1.申请keys

中国气象网 气象数据开放平台 API用法 (Android)

因为要做个天气应用.须要找个天气的API.上网上搜了下都是那几个,并且基本都过时了.百度有个天气API,只是貌似仅仅能提供当天的.网上提到的中国气象接口的文章,大都用的时旧API,有的被封了,有的永远停到了2014年3月24不更新了. 后来找到了中国天气的新接口,已经升级成气象数据开放平台了http://openweather.weather.com.cn/.没有开发人员社区或论坛什么的,仅仅能自己琢磨他的文档了(感觉没人维护..). 经过几个疑难点卡住后.总算调通了. 现分享给大家. 1.申请

微博开放平台

http://open.weibo.com/webmaste 下面都地址都要写全,不能只写域名