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

优采云 发布时间: 2021-11-09 10:10

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

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

  下面就让我们来探究一下其中的奥秘。

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

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

  

  如果可以看到如下页面,则只需根据提示填写即可。紧急联系人可自行填写。网站 没关系,你可以百度一下。

  

  提交后,您需要在个人申请中验证您的真实姓名。上传图片时请耐心等待。有点慢,没有上传进度。上传后点击返回跳转到新页面:

  

  根据您的需要选择,然后构建您自己的应用程序。至于里面的各个应用术语的含义,我不是很清楚,熟悉一下就好了。我选择其他应用

  

  

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

  2.获取令牌

  在首页点击api接口,会跳转到api接口描述文档页面。你会发现这个api有很*敏*感*词*,包括创建微博、删除微博、关注/取消关注等,接口很多,但是每个接口都需要token才能访问。令牌从哪里来?

  一是要拿到code,二是要有调用接口的网址(因为我申请的是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。所以代码有

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

  

  页面上有详细的用法,发送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,其他模拟登录的方法种类繁多,非常麻烦。网络

  当然,如果你把它嵌入到网站上,那么登录是用户的事。json

  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.如果你把open api嵌入到自己的网站中,一般的做法是:在分享微博按钮(第三方登录按钮)上,发送微博授权认证,用户点击授权后网页,后台获取code,根据code获取token。之后,如果需要提取微博的用户名,可以直接在后台发送请求。如果分享到微博,也可以通过api来完成。

  如果以后在实践中用到这些功能,那就做个记录。本文到此结束。

  来自维兹

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线