使用新浪微博开放平台api同步微博内容至自己网站(微博开放平台注册开发者并获取app和appsecret百度很容易)

优采云 发布时间: 2022-03-06 17:15

  使用新浪微博开放平台api同步微博内容至自己网站(微博开放平台注册开发者并获取app和appsecret百度很容易)

  简介本文章主要介绍微博开放平台api的使用(示例代码)及相关经验与技巧,文章约7015字,371页浏览量,8个赞,值得推荐!

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

  下面我们来一探究竟。

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

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

  

  可以看到如下页面,按照提示填写即可,紧急联系人可以自己填写,网站无所谓,百度填写。

  

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

  

  根据需要选择并创建您自己的应用程序。至于这里的各种应用名词的含义,我也不是很清楚,也很熟悉。我选择另一个应用程序

  

  

  创建后,您将收到一封收录应用密钥和应用密码的电子邮件。这是获得授权的关键。

  2.获取令牌

  点击首页的api接口,会跳转到api接口说明文档页面,你会发现api有很*敏*感*词*,包括创建微博、删除微博、关注/取消关注等很多接口,但是每个接口都需要一个令牌。使用权。令牌从何而来?

  首先,你需要得到一个代码,其次,你需要一个URL来调用接口(因为我正在申请一个web应用程序)。

  设置关联的 URL:

  

  单击您的应用名称,然后在左侧菜单中找到高级信息,您可以对其进行编辑。

  

  点击api接口

  

  ,进入授权界面查看使用情况

  

  根据示例,您需要发送收录client_id 和redirect_uri 的get 请求。可以直接拼接。

  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。所以代码有

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

  

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

  

  代码写得不好,但有点可用。5 个强制参数值。我们有最后两个,前两个在邮件中。代码不会发布。照顾好自己,敲敲它会帮助你熟悉用法,以后还要发送各种请求。

  至此,我们已经授权成功,返回值收录了需要的token值。如果返回错误,请查看错误信息或百度错误信息。

  之后,您只需要携带令牌即可请求各种接口。虽然有次数限制,但应该足够正常使用了。

  后记:

  1.本来想做一些类似爬虫的功能,想在微博的开放界面获取一些数据,但是看api,大部分都是基于web应用的微博分享功能.

  比如自己发微博、拉粉丝、发微博、关注等等,都不是你需要的。

  

  2.前面说过,微博开放api主要用于第三方网站或者app访问微博,通过api使用微博登录或者分享微博,所以完全有这个需求方面。可以深入了解一下api接口。

  在3.api接口中,可以直接串接字符串获取get请求,但是对于刚刚请求授权的get请求,需要用户账号同意授权应用,所以必须登录用户账号如果浏览器在微博登录后保留cookie,则浏览器可以自动登录获取目标码,如果没有则提示登录

  

  所以这个请求适合在浏览器上做,因为用代码发送请求来模拟登录,或者登录后使用cookie都很麻烦。不过api中的其他get请求不会有这个问题,直接带token就行了。可以使用selenium的webdriver获取cookies进行模拟登录,其他的模拟登录方式一般都很麻烦。

  当然,如果您嵌入 网站,则登录取决于用户。

  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 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 笔记 (Wiz)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线