网站调用新浪微博内容(Web2.0时代,新浪微博API官方的方式总是显得很麻烦)
优采云 发布时间: 2022-04-05 08:15网站调用新浪微博内容(Web2.0时代,新浪微博API官方的方式总是显得很麻烦)
新浪微博的API官方提供了多种调用方式,支持编程,归根结底有两种:
1.基于 Oauth 协议,使用 Open API。(%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E)
2.使用微博JS-SDK( )。
官方的方式总是显得繁琐。让我们来探索一下,是否可以使用非官方的方法,在没有A*敏*感*词*ey、身份验证和Ajax 的情况下,跨域调用新浪微博API?
在Web2.0时代,短链服务非常流行。新浪的短链服务域名是,这个域名真的很短,没办法变短。
打开新浪微博API官方文档,短链服务描述如下:
上面列出的方法调用都是相似的。我们以第一种方法 short_url/shorten 为例。打开详细说明:
我们来分析一下这一段:
1.需要登录:不。这很重要,因为我们不需要登录,我们的“免认证”就可以正常工作。
2.频率限制:是的。这也是很关键的,也就是说如果我们走官方的方式,调用的次数会非常有限。
3.支持的格式:JSON。事实上,根据实验,新浪微博不仅支持JSON,还支持JSONP,但文档并没有告诉我们。这也很关键。因为有JSONP,就意味着可以轻松跨域。
4.网址:. 事实上,这也是一个谎言。HTTPS 肯定会影响速度。经过实验,直接把HTTPS改成HTTP还是可以的。
接下来,一一突破难关。
一、使用JQuery+JSONP跨域。
参考文档:
jquery对JSONP非常友好,调用AJAX时只需指定dataType:jsonp即可。
二是频率限制问题。
由于不需要登录,因此可以绕过频率限制问题。因为 A*敏*感*词*ey 本身是半公开的。我们可以轻松地 Google 到一堆很棒的应用程序的 A*敏*感*词*ey。
例如:
iPhone新浪微博客户端App Key:5786724301
iPad新浪客户端App Key:2849184197
Google.Nexus Wave 客户端应用密钥:1206405345
周伯通微博经理App Key:202088835
微博应用密钥:211160679
上面列出的 A*敏*感*词*ey 都是来自一些拥有大量用户的移动应用程序。它们的频率限制非常宽松,几乎可以理解为“无限制”。为了解决频率限制问题,我们可以使用他们的A*敏*感*词*ey。
另外:新浪微博API的频次限制有两个维度,服务IP维度和用户IP维度。. 这与本文无关,因为 Javascript 在客户端运行。但是如果要修改本文中提到的方法,使用C#或其他高级语言在服务器端调用,一定要注意服务器IP维度。
三、一个简单的实验。
浏览器会显示
{"urls":[
{"result":true,"url_short":"http://t.cn/h5FGy","url_long":","type":0}
]}
通过访问上述的地址,您已经得到了的段地址:http://t.cn/h5FGy
注意我们使用的是http而非https,不需要使用https,上文已经提到了。
四、最终代码示例
最终代码的示例参考这里http://haotaoqu.com/item-45.html
这个示例将一个又臭又长的*敏*感*词*URL地址转换为了新浪短地址。
Javascript代码如下:
五、除了short_url/shorten,其他可以用这个方法调用的API
任何标有“login required: no”的接口都可以通过本文的rogue方法调用。打开%E6%96%87%E6%A1%A3_V2的官方文档慢慢选择~