`

以短链服务为例,探讨免AppKey、免认证、Ajax跨域调用新浪微博API

    博客分类:
  • web
 
阅读更多
新浪微博的API官方提供了很多种调用方式,支持编程的,归根结底就是两种:

1.基于Oauth协议,使用Open API。(http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E)
2.使用Weibo JS-SDK(http://open.weibo.com/sdk/js )。
官方的方式总是显得很麻烦。我们来探讨一下,能不能通过非官方的方法,免AppKey、免认证、Ajax跨域调用新浪微博API呢?

Web 2.0时代,短链服务非常流行。新浪的短链服务域名是t.cn,这个域名实在是非常短,没办法更短了。

打开新浪微博API的官方文档,关于短链服务是这样的描述的:



以上列举的方法调用都大同小异。我们再以第一个方法short_url/shorten为例。打开详细说明:http://open.weibo.com/wiki/2/short_url/shorten


我们来分析一下这一段说明:
1.是否需要登录:否。这很关键,既然不需要登录,我们的“免认证”就好发挥了。

2.频次限制:是。这也很关键,这意味着如果我们按照官方的方式,调用次数将非常受限。

3.支持格式:JSON。其实根据实验,新浪微博不仅支持JSON,还支持JSONP,只是文档没告诉我们罢了。这也很关键。因为有了JSONP,就意味着可以方便的跨域了。

4.URL:https://api.weibo.com/2/short_url/shorten.json 。其实这也是骗人的。HTTPS必定会影响速度。经过实验,直接把HTTPS改为HTTP,仍然是OK的。



接下来逐个攻破难点。

一,使用JQuery+JSONP跨域。

参考文档:http://baike.baidu.com/view/2131174.htm

Jquery对JSONP非常友好,只需要在AJAX调用时指明dataType : jsonp就可以了。



二,频次限制问题。

既然不需要登录,频次限制问题就可以绕过。因为AppKey本身是半公开的。我们可以很轻松地Google到一大堆牛逼应用的Appkey。

例如 :

iphone新浪微博客户端 App Key:5786724301

iPad新浪客户端App Key:2849184197

Google.Nexus浪客户端App Key:1206405345

周博通微博管家App Key:202088835

Weico App Key:211160679


以上列举的这些AppKey,都是来自于一些用户量非常多的手机应用,它们的频次限制非常宽松的,几乎可以理解为“不限制”。为了解决频次限制问题,我们用它们的Appkey就可以了。

另外:新浪微博API的频次限制是有两个维度的,服务IP维度和用户IP维度。http://open.weibo.com/wiki/Rate-limiting 。这一点与本文无关,因为Javascript在客户端运行。但如果您想对本文提到的方法进行改装,使用C#或其他高级语言在服务器端进行调用的话,就要注意服务器IP维度了。



三、简单的实验一下。

您现在可以直接在浏览器中访问这个地址:

http://api.weibo.com/2/short_url/shorten.json?source=2849184197&url_long=http://www.cnblogs.com

浏览器中将显示

{"urls":[
{"result":true,"url_short":"http://t.cn/h5FGy","url_long":"http://www.cnblogs.com","type":0}
]}
通过访问上述的地址,您已经得到了http://www.cnblogs.com的段地址:http://t.cn/h5FGy
注意我们使用的是http而非https,不需要使用https,上文已经提到了。

四、最终代码示例
最终代码的示例参考这里http://haotaoqu.com/item-45.html
这个示例将一个又臭又长的淘宝客URL地址转换为了新浪短地址。



<script type="text/javascript">



$(document).ready(function(){



    var j=$("#urlText");



    var i=$("#goumai");



     $.ajax({ 

 //使用iPad新浪微博客户端的Appkey

            url: 'http://api.weibo.com/2/short_url/shorten.json?source=2849184197&url_long='+i[0].href,  

            type: "GET",

            dataType: "jsonp", //使用JSONP方法进行AJAX

            cache: false,

            success: function (data) {

                j.val ( data.data.urls[0].url_short); //处理返回数据,显示到网页上 

                    });

                }});

});



</script>


分享到:
评论

相关推荐

    分享到新浪微博示例

    在IT行业中,分享功能是许多应用和服务不可或缺的一部分,特别是在社交媒体平台如新浪微博上。这个"分享到新浪微博示例"提供了一个实现这一功能的具体实践,对于开发者来说具有很高的学习价值。下面,我们将深入探讨...

    dot新浪微博修正版

    新浪微博API允许开发者通过编程的方式调用微博平台的各种服务,如用户信息获取、内容发布、消息推送等。在这个修正版中,开发者已经成功地利用了新浪API,实现了与微博平台的无缝对接。 接下来,我们关注一下项目中...

    新浪微博商业化加快:与淘宝共推信息流广告.docx

    【新浪微博的商业化进程】 新浪微博作为中国的一大社交媒体平台,其商业化步伐不断加速。在与淘宝的合作中,新浪微博推出了“橱窗推荐”功能,这是一种基于用户社交关系和兴趣图谱的数据挖掘和匹配的产品。此功能...

    亿级用户下的新浪微博平台架构1

    2.服务层主要把核心业务模块化、服务化,这里又分为两类服务,一类为原子服务,其定义是不依赖任何其他服务的服务模块,比如常用的短链服务、发号器服务都属于这一类。图中使用泳道隔离,表示它们的独立性。另外一类...

    亿级访问量下的新浪微博系统架构.doc

    2. **服务层**:将核心业务模块化、服务化,分为原子服务(独立,如短链、发号器服务)和组合服务(如Feed、通讯服务,依赖于其他服务)。 3. **资源层**:包含缓存(Redis、MC)、持久化数据库(MySQL、HBase)、...

    亿级用户下的新浪微博平台架构.pdf

    - **原子服务**:不依赖其他服务的独立服务模块,如短链服务、发号器服务。 - **组合服务**:通过原子服务和业务逻辑组合而成,例如Feed服务和通讯服务。 - **资源层**:提供数据存储服务,包括缓存资源(Redis、...

    百度API生成短链代码

    百度提供的短链服务API允许开发者通过简单的接口调用将长链接转换成更简短的形式,便于分享和传播。 #### 二、核心功能实现 ##### 1. 关键概念 - **长链接**:原始的、完整的网络资源地址。 - **短链接**:经过...

    Java实现短链转换项目

    在IT行业中,短链接服务是一种常见的功能,它能够将冗长的URL转化为简短的、易于分享和记忆的链接。本项目是基于Java技术栈,利用SpringBoot框架、Redis缓存系统、MySQL数据库以及布隆过滤器来实现短链转换。下面...

    2013年年度电商微博发展报告.pdf

    这份报告详细分析了2013年度电商在微博上的表现和影响,涵盖了电商网站在微博上的账号影响力、粉丝属性、短链分享情况以及营销策略等重要方面。 首先,报告对2013年电商网站在新浪微博上的账号影响力进行了排名。...

    Java 短链接测试程序

    Java URL Shortener 是一个用于将长链接转换为短链接的测试程序,主要针对那些需要在有限空间内展示链接,如二维码生成、微博分享等场景。这个程序整合了国内外多个知名的短链服务API,使得开发者可以方便地进行长...

    短链批量生成器

    通常,短链服务会提供一个API接口,通过这个接口,用户可以提交一个长URL,服务端会将其映射到一个短码。这个短码是由服务端自动生成的一串唯一的字符串,例如bit.ly或t.cn。当访问这个短码时,服务端会将用户重定向...

    AJAX的跨域与JSONP(为文章自动添加短址的功能)

    然而,出于安全考虑,浏览器实施了一项名为同源策略的机制,禁止了AJAX进行跨域请求。这意味着如果一个网页位于www.a.com,它不能使用AJAX直接获取www.b.com的数据,除非两个网站具有相同的域名、子域名或者端口号。...

    微信微博QQ空间分享代码

    微博分享主要涉及短链服务和OAuth授权。在Java中,我们可以使用Spring Social库,它提供了一套完整的OAuth2支持,简化了与微博API的交互。通过Spring Social,你可以轻松地获取用户授权,然后发布微博,包括文字、...

    修复前端模板,无视易支付认证,免费防红链接接口,推广无压力

    实现这一功能的接口可能利用了URL重写、短链服务或者加密技术。在PHP中,可以使用cURL库发送HTTP请求,或者通过session、cookie来跟踪用户状态,以提供防红链接服务。 根据提供的文件列表,我们可以看到一些关键...

    SpringCloud微服务架构-海量数据商用短链平台项目 视频教程 百度网盘链接2.zip

    │ 73.8- 短链平台大课简历-短链服务编写实战.mp4 │ ├─74.短链平台-服务端性能数据评估-?试回答(3节) │ 74.1-面试-短链平台后端接口扩容性能评估方案《上》.mp4 │ 74.2-面试-短链平台后端接口扩容性能...

    2012年4月网站微博发展报告

    2012年4月的《网站微博发展报告》由新浪微博数据中心发布,该报告深度剖析了当月网站微博的发展态势,提供了宝贵的行业洞察。报告涵盖网站微博账号分析、短链分析以及影响力指数发展趋势等内容,为网站运营者提供了...

    自己自定义后缀,带数据统计-D短链.zip

    在IT行业中,短链接服务是一种常见的工具,它能够将长且复杂的URL转换为简短、易记的形式。这种服务在社交媒体、营销活动以及各种在线分享中广泛应用,因为它们不仅节省空间,还能提升用户体验。"自己自定义后缀,带...

    C#实现类似新浪微博长URL转短地址的方法

    本文实例讲述了C#实现类似新浪微博长URL转短地址的方法。分享给大家供大家参考。具体如下: 一、前台判断用户输入URL的JS代码如下。 function CheckInput() { var $txtLength = $("#inp_text").val().length; if ...

    谷歌微博图床插件修复版

    【谷歌微博图床插件修复版】是一款专为谷歌浏览器(Chrome)设计的扩展程序,旨在帮助用户方便快捷地将图片上传至微博平台,并作为图床使用。微博图床因其稳定性高、上传速度快且免费的特点,深受广大互联网用户的...

    一个基于SpringBoot 开发的在线短链生成系统.zip

    5. **前端界面**:虽然短链服务主要通过API提供,但一个友好的用户界面可以提升用户体验。可以使用Thymeleaf、FreeMarker或其他模板引擎配合SpringBoot的视图解析器来构建前端页面,用户可以在界面上输入长链接,...

Global site tag (gtag.js) - Google Analytics