
使用新浪微博开放平台api同步微博内容至自己网站
使用新浪微博开放平台api同步微博内容至自己网站(使用API提交数据(发布一条微博信息)(组图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 100 次浏览 • 2022-04-10 03:16
我也是新手,第一次使用开放平台进行开发。起初,我觉得我无处可去。经过长时间的摸索,终于成功调用了API。现在给新手介绍一下这段经历(高手不用看,当然如果大家能提出一些意见和建议,非常感谢),也想和大家交流。
本例介绍如何使用 API 提交数据(发布一条微博)和使用 API 获取数据(获取最新的 20 条公开微博消息),即官方 API Go 中的“获取下行数据集(时间线)接口”到“微博访问界面”下的“statuses/public_timeline 获取最新更新的公众微博新闻”和“statuses/update 发布微博消息”。
首先,你必须有新浪微博账号并申请一个app key(详情请参考%E6%96%B0%E6%89%8B%E6%8C%87%E5%8D%97),然后在VS中新建一个解决方案,在解决方案中添加一个类库和一个网站,并添加一个引用(网站指的是类库)。
由于发微博是POST请求,获取数据是GET请求,并且是通过HTTP Basic Authentication授权的,所以我把这些函数写在一个类中(在类库中),代码如下(这个类参考to , 没有仔细考虑达到普遍性):
发送请求和授权码
然后在类库中新建两个实体类status和user,字段与官方API一致:
状态实体类
用户实体类
好了,经过以上步骤,准备工作就完成了。现在让我们开始调用 API。我们先来看发布一条微博消息。虽然在这个文章()中已经介绍过了,但为了本文的完整性,我还是贴出来。我的代码,在类库中添加一个微博访问类MiniBlogVisit类:
微博接入类
您可以通过调用 update 方法发布微博。不过需要注意的是,这里的Content要用HttpUtility.UrlEncode编码,否则会出现乱码。
我们来看看最新的20条公众微博消息,这是官方API中的第一个接口。这里返回的数据是 XML 数据或 JSON 数据。您可以根据自己的喜好自由选择。我选择返回 XML 数据。我的方法是将返回的 XML 数据写入 XML 文件,然后解析 XML 文件。代码如下:
获取数据代码
好了,现在该调用了,调用比较简单,就是一个空的Default.aspx页面,后台代码如下:
调用代码
至此,所有的代码都写好了,我们来看看完整的解决方案:
运行后的效果如下:
第一次调用API,第一次写这么长的文章。欢迎大家多多评论!!! 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(使用API提交数据(发布一条微博信息)(组图))
我也是新手,第一次使用开放平台进行开发。起初,我觉得我无处可去。经过长时间的摸索,终于成功调用了API。现在给新手介绍一下这段经历(高手不用看,当然如果大家能提出一些意见和建议,非常感谢),也想和大家交流。
本例介绍如何使用 API 提交数据(发布一条微博)和使用 API 获取数据(获取最新的 20 条公开微博消息),即官方 API Go 中的“获取下行数据集(时间线)接口”到“微博访问界面”下的“statuses/public_timeline 获取最新更新的公众微博新闻”和“statuses/update 发布微博消息”。
首先,你必须有新浪微博账号并申请一个app key(详情请参考%E6%96%B0%E6%89%8B%E6%8C%87%E5%8D%97),然后在VS中新建一个解决方案,在解决方案中添加一个类库和一个网站,并添加一个引用(网站指的是类库)。

由于发微博是POST请求,获取数据是GET请求,并且是通过HTTP Basic Authentication授权的,所以我把这些函数写在一个类中(在类库中),代码如下(这个类参考to , 没有仔细考虑达到普遍性):

发送请求和授权码
然后在类库中新建两个实体类status和user,字段与官方API一致:

状态实体类

用户实体类
好了,经过以上步骤,准备工作就完成了。现在让我们开始调用 API。我们先来看发布一条微博消息。虽然在这个文章()中已经介绍过了,但为了本文的完整性,我还是贴出来。我的代码,在类库中添加一个微博访问类MiniBlogVisit类:

微博接入类
您可以通过调用 update 方法发布微博。不过需要注意的是,这里的Content要用HttpUtility.UrlEncode编码,否则会出现乱码。
我们来看看最新的20条公众微博消息,这是官方API中的第一个接口。这里返回的数据是 XML 数据或 JSON 数据。您可以根据自己的喜好自由选择。我选择返回 XML 数据。我的方法是将返回的 XML 数据写入 XML 文件,然后解析 XML 文件。代码如下:

获取数据代码
好了,现在该调用了,调用比较简单,就是一个空的Default.aspx页面,后台代码如下:

调用代码
至此,所有的代码都写好了,我们来看看完整的解决方案:

运行后的效果如下:

第一次调用API,第一次写这么长的文章。欢迎大家多多评论!!!
使用新浪微博开放平台api同步微博内容至自己网站(插件的“同步微博”中设置,你知道吗?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 61 次浏览 • 2022-04-09 10:27
提示:此功能在插件的“同步微博”中设置。
①自定义消息的“更新间隔”是指修改文章时是否需要再次同步文章到微博,设置为0表示不再同步,否则请填写天根据实际情况!
②禁止同步的文章分类ID,这里的意思是如果你不想同步的分类下有文章,只需要填写数字,多个分类是被逗号隔开 (,)。
③多作者博客,即每个作者发布的文章同步到各自的微博,可以通知他们在我的个人资料中设置。打开看看情况!
④ Twitter 是否使用代理?
国内主机用户使用推特必须勾选,国外主机不勾选,不使用推特请不要勾选!
⑤ 无法绑定账号
此项表示绑定账号时只需要检查主机何时出错。勾选后即可获取授权码,然后点击下方“账号绑定”图标上对应的微博图标,填写授权码。如果可以正常绑定账号,请不要勾选,因为勾选后将无法自定义api key,微博的“from XXX”也无法显示。
⑥服务器时间修正
有些微博对服务器时间有限制,比如腾讯微博、QQ登录、豆瓣等,如果你的服务器时间和他们的相差太大,就会出现错误。请点击“环境检查”,有一个当前的服务器时间,和你的电脑(北京时间)对比一下,几分钟就能看出差别!然后填写,如果没有问题就不用填写了。
⑦开放平台
这里的设置是显示微博的“来自XXX”。如未申请并通过审核,请勿填写。请点击以下网址申请:
腾讯微博开放平台:
新浪微博开放平台:
搜狐微博开放平台:
网易微博开放平台:
注意:更改APP密钥后,请重新绑定对应账号!
⑧账户绑定
不用说,您可以通过点击相应的微博图标来绑定您的帐户。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(插件的“同步微博”中设置,你知道吗?)
提示:此功能在插件的“同步微博”中设置。
①自定义消息的“更新间隔”是指修改文章时是否需要再次同步文章到微博,设置为0表示不再同步,否则请填写天根据实际情况!
②禁止同步的文章分类ID,这里的意思是如果你不想同步的分类下有文章,只需要填写数字,多个分类是被逗号隔开 (,)。
③多作者博客,即每个作者发布的文章同步到各自的微博,可以通知他们在我的个人资料中设置。打开看看情况!
④ Twitter 是否使用代理?
国内主机用户使用推特必须勾选,国外主机不勾选,不使用推特请不要勾选!
⑤ 无法绑定账号
此项表示绑定账号时只需要检查主机何时出错。勾选后即可获取授权码,然后点击下方“账号绑定”图标上对应的微博图标,填写授权码。如果可以正常绑定账号,请不要勾选,因为勾选后将无法自定义api key,微博的“from XXX”也无法显示。
⑥服务器时间修正
有些微博对服务器时间有限制,比如腾讯微博、QQ登录、豆瓣等,如果你的服务器时间和他们的相差太大,就会出现错误。请点击“环境检查”,有一个当前的服务器时间,和你的电脑(北京时间)对比一下,几分钟就能看出差别!然后填写,如果没有问题就不用填写了。
⑦开放平台
这里的设置是显示微博的“来自XXX”。如未申请并通过审核,请勿填写。请点击以下网址申请:
腾讯微博开放平台:
新浪微博开放平台:
搜狐微博开放平台:
网易微博开放平台:
注意:更改APP密钥后,请重新绑定对应账号!
⑧账户绑定
不用说,您可以通过点击相应的微博图标来绑定您的帐户。
使用新浪微博开放平台api同步微博内容至自己网站(新浪微博的API让你蛋碎到极致:weibo4j-oauth2)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-04-07 22:23
但是新浪提供的API可以用繁琐的项目来形容,尤其是关于java的API。javaAPI的三个版本会让你的蛋破到极致:weibo4j-oauth2.0、weibo4jandroid、android-sdk这三个版本真的是逆天了。由于新浪微博将v1改为v2,weibo4jandroid已经不可用了,所以我们只能使用剩下的两个。但是当你下载它时非常难
版本,运行这个程序,发现只能获取代码,不能获取accesstoken,打开源代码,点击里面的MainActivity,找到一句操蛋到想断了自己的鸡:
别着急,新浪其实已经提供了通过code转成token的方法,不过不是在android-sdk中间,而是在weibo4j.examples.oauth2.OAuth4Code里面weibo4j:
1、在微博开发平台注册开发者用户并审核来电
2、正在创建并批准一个新的应用程序
3、在微博开发平台下载SDK中对应的程序(包)
4、运行程序(做一些相应的修改)
希望现在的新学者能有所帮助
但是新浪提供的API可以用繁琐的项目来形容,尤其是关于java的API。javaAPI的三个版本会让你的蛋破到极致:weibo4j-oauth2.0、weibo4jandroid、android-sdk这三个版本真的是逆天了。由于新浪微博将v1改为v2,weibo4jandroid已经不可用了,所以我们只能使用剩下的两个。但是当你很用力下载版本的时候,运行程序,发现只能获取代码,不能获取accesstoken,打开源码,点击里面的MainActivity,找到一句操蛋到想剪的句子自己吃鸡:别担心,新浪其实已经提供了通过代码转成token的方法,不过不是在android-sdk中间,而是在weibo4j.examples.oauth2.
详细讲解一下如何使用新浪微博的API——但是新浪提供的API可以说是一个复杂的工程,尤其是java的API。三个版本的javaAPI会让你的蛋破到极致:weibo4j-oauth2.0,源代码weibo4jandroid和android-sdk三个版本真是逆天了。由于新浪微博将v1改成v2,weibo4jandroid一直不可用,...
如何使用新浪微博API开放平台进行程序开发——但是新浪提供的API可谓是一个繁琐的工程,尤其是java API。javaAPI的三个版本会让你把蛋破到极致:weibo4j-oauth2.0、weibo4jandroid、android-sdk这三个版本真是逆天了。由于新浪微博将v1改成v2,weibo4jandroid就不能用了,所以只能...
如何调用api发送微博————
如何调用新浪微博api?—— 可以参考新浪微博官方开放平台:关于API调用,官方API文档中有更详细的介绍:%E6%96%87%E6%A1%A3.
微博api开放了哪些功能?简单介绍一下用过的,谢谢!——微博开放平台是基于新浪微博系统的开放信息订阅、分享和交流平台。微博开放平台为您提供随时随地发生的海量微博资讯、粉丝关系、信息裂变式传播渠道。您可以登录平台创建应用,使用微博平台提供的界面创建有趣的...
微博开放平台接口——微博开放平台是微博系统与外部网站通过API接口交换信息的接口方式。新浪微博已部分开放API功能,微博文学网已开放普通网站API功能。长期用户已开通分享API功能。有关详细信息,请阅读:
如何通过python调用新浪微博的API——大家可以通过新浪微博开发者平台注册自己的应用。我在网站上注册了一个应用程序。注册后,每个应用都会被分配一个唯一的 app key 和 app secret ,需要在上面提到的授权机制中使用,相当于每个应用的标记。
如何申请新浪微博的网站 API?- ——那不是新浪的API,是网站分享插件。现在比较流行的是JiaThis,你可以通过搜索找到它。还有bshare,addthis,有订阅功能。
如何在新浪微博开放平台实现应用——看看这个你就明白了,要创建一个应用,你可以在拿到AppKey后打开这个页面,创建一个按钮,把这个按钮添加到你的网页中~
新浪微博内容接口如何使用... JAVA相关——新浪上有一个OpenAPI接口,可以学习新浪给出的例子 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(新浪微博的API让你蛋碎到极致:weibo4j-oauth2)
但是新浪提供的API可以用繁琐的项目来形容,尤其是关于java的API。javaAPI的三个版本会让你的蛋破到极致:weibo4j-oauth2.0、weibo4jandroid、android-sdk这三个版本真的是逆天了。由于新浪微博将v1改为v2,weibo4jandroid已经不可用了,所以我们只能使用剩下的两个。但是当你下载它时非常难
版本,运行这个程序,发现只能获取代码,不能获取accesstoken,打开源代码,点击里面的MainActivity,找到一句操蛋到想断了自己的鸡:
别着急,新浪其实已经提供了通过code转成token的方法,不过不是在android-sdk中间,而是在weibo4j.examples.oauth2.OAuth4Code里面weibo4j:
1、在微博开发平台注册开发者用户并审核来电
2、正在创建并批准一个新的应用程序
3、在微博开发平台下载SDK中对应的程序(包)
4、运行程序(做一些相应的修改)
希望现在的新学者能有所帮助
但是新浪提供的API可以用繁琐的项目来形容,尤其是关于java的API。javaAPI的三个版本会让你的蛋破到极致:weibo4j-oauth2.0、weibo4jandroid、android-sdk这三个版本真的是逆天了。由于新浪微博将v1改为v2,weibo4jandroid已经不可用了,所以我们只能使用剩下的两个。但是当你很用力下载版本的时候,运行程序,发现只能获取代码,不能获取accesstoken,打开源码,点击里面的MainActivity,找到一句操蛋到想剪的句子自己吃鸡:别担心,新浪其实已经提供了通过代码转成token的方法,不过不是在android-sdk中间,而是在weibo4j.examples.oauth2.
详细讲解一下如何使用新浪微博的API——但是新浪提供的API可以说是一个复杂的工程,尤其是java的API。三个版本的javaAPI会让你的蛋破到极致:weibo4j-oauth2.0,源代码weibo4jandroid和android-sdk三个版本真是逆天了。由于新浪微博将v1改成v2,weibo4jandroid一直不可用,...
如何使用新浪微博API开放平台进行程序开发——但是新浪提供的API可谓是一个繁琐的工程,尤其是java API。javaAPI的三个版本会让你把蛋破到极致:weibo4j-oauth2.0、weibo4jandroid、android-sdk这三个版本真是逆天了。由于新浪微博将v1改成v2,weibo4jandroid就不能用了,所以只能...
如何调用api发送微博————
如何调用新浪微博api?—— 可以参考新浪微博官方开放平台:关于API调用,官方API文档中有更详细的介绍:%E6%96%87%E6%A1%A3.
微博api开放了哪些功能?简单介绍一下用过的,谢谢!——微博开放平台是基于新浪微博系统的开放信息订阅、分享和交流平台。微博开放平台为您提供随时随地发生的海量微博资讯、粉丝关系、信息裂变式传播渠道。您可以登录平台创建应用,使用微博平台提供的界面创建有趣的...
微博开放平台接口——微博开放平台是微博系统与外部网站通过API接口交换信息的接口方式。新浪微博已部分开放API功能,微博文学网已开放普通网站API功能。长期用户已开通分享API功能。有关详细信息,请阅读:
如何通过python调用新浪微博的API——大家可以通过新浪微博开发者平台注册自己的应用。我在网站上注册了一个应用程序。注册后,每个应用都会被分配一个唯一的 app key 和 app secret ,需要在上面提到的授权机制中使用,相当于每个应用的标记。
如何申请新浪微博的网站 API?- ——那不是新浪的API,是网站分享插件。现在比较流行的是JiaThis,你可以通过搜索找到它。还有bshare,addthis,有订阅功能。
如何在新浪微博开放平台实现应用——看看这个你就明白了,要创建一个应用,你可以在拿到AppKey后打开这个页面,创建一个按钮,把这个按钮添加到你的网页中~
新浪微博内容接口如何使用... JAVA相关——新浪上有一个OpenAPI接口,可以学习新浪给出的例子
使用新浪微博开放平台api同步微博内容至自己网站(微博信息抓取系统第0页共26页微博信息)
网站优化 • 优采云 发表了文章 • 0 个评论 • 52 次浏览 • 2022-04-07 04:18
文档介绍:微博信息采集系统 第0页,共26页 微博信息采集系统 [摘要] 针对微博海量数据和用户关系群,本文提出并实现了一个基于新浪开放平台和Oauth的实现2.0 微博信息采集系统。系统实现的主要功能有: (1) 抓取微博大厅滚动的微博及其评论(2) 抓取微博用户的好友及其相互关系。通过线程池和数据库实现微博信息的抓取和存储,通过prefuse的API将用户关系图形化展示,从实际运行效果分析,抓取系统可以满足各种SNS应用的内容填充,和网络用户的社交网络。网络关系分析。【关键词】 Oauth2.0 ; 新浪开放平台;社交网络关系;prefuse 1 引言1.1 研究背景及意义微博迎来了真正的微博时代。微博内容短、写作门槛低、传播渠道便捷、多元化、同步化,使得信息生产趋于零时间。与其他信息交流方式不同,微博最大的特点是技术上的可移植性。2009年,3G牌照的发放标志着移动互联网时代的到来。手机和互联网这两个中国发展最快的媒体开始融合在一起,为微博的快速扩张做出了技术贡献。与传统博客相比,
用户可以通过多种方式登录微博,发布微博。尤其是手机与微博的绑定,让这个新媒体更贴近微博用户,满足4A的要素,即Anything,anywhere,anyone,anytime。任何用户都可以随时随地发布任何内容。从此,人们的信息交流得到了前所未有的解放。微博信息采集系统通过开放平台的API采集我们需要的信息,并在运营初期为各种SNS[1]社区应用丰富其数据量和用户量,以吸引更多用户关注和使用. SNS 社区交友是现在网络用户相互交流最重要的方式。目前最流行的SNS网络是开心网、人人网和各大微博。他们之中,新浪微博拥有最多的活跃用户。信息采集功能。整个系统的框架具有很强的扩展性,可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。信息采集功能。整个系统的框架具有很强的扩展性,可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。信息采集功能。整个系统的框架具有很强的扩展性,可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。并以图形方式展示网络用户之间的社交网络关系1.2 本项目的主要工作 本文要解决的主要问题是抓取新浪微博Lobby Data的微博及其相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。并以图形方式展示网络用户之间的社交网络关系1.2 本项目的主要工作 本文要解决的主要问题是抓取新浪微博Lobby Data的微博及其相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。
并通过 Prefuse 将捕获到的微博用户的好友关系可视化。实施全自动捕获、解析和数据存储过程。大大提高了信息采集的工作效率,大大降低了信息采集的错误率。满足企事业单位对微博信息的内容需求和网络微博信息采集系统用户的社会关系分析。2 新浪微博开放平台2.1 微博用户授权与认证2.1.1 新浪微博应用创建新浪微博开放平台允许所有微博用户创建自己的应用,用户可以创建您自己的应用只要填写开发者的详细信息和应用的相关信息即可。应用创建成功后,开发者会得到应用的APP KEY和Sercret Key。我们通过这两个键进行相关的技术开发工作。并通过这两个键唯一标识我们的应用程序。其新浪微博应用创建与发布流程图如图1所示。 图1 新浪开放平台应用创建流程及下个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。我们通过这两个键进行相关的技术开发工作。并通过这两个键唯一标识我们的应用程序。其新浪微博应用创建与发布流程图如图1所示。 图1 新浪开放平台应用创建流程及下个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。我们通过这两个键进行相关的技术开发工作。并通过这两个键唯一标识我们的应用程序。其新浪微博应用创建与发布流程图如图1所示。 图1 新浪开放平台应用创建流程及下个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。图1 新浪开放平台应用创建流程及下一个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。图1 新浪开放平台应用创建流程及下一个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。
OAuth 允许用户提供令牌而不是用户名和密码来访问他们存储在特定服务提供商处的数据。每个令牌授权特定的网站(例如,视频编辑器网站)在指定的时间段(例如,接下来的 2 小时)内访问特定资源(例如,只是某个专辑)。 )。通过这种方式,OAuth 允许用户授权第三方网站访问他们存储在另一个服务提供商上的信息,而无需共享他们的访问权限或他们数据的全部内容。与 OAuth1.0 相比,OAuth2.0 的整个授权验证过程更简单、更安全。也是新浪微博开发平台未来最重要的用户认证和授权方式。使用新的 2. 0 授权认证协议。开发者只需要调用oauth2/authorize接口引导用户进行授权,授权后重定向的网页获取代码后,从服务器的oauth2/access_token接口交换access_token,即可使用access_token。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(微博信息抓取系统第0页共26页微博信息)
文档介绍:微博信息采集系统 第0页,共26页 微博信息采集系统 [摘要] 针对微博海量数据和用户关系群,本文提出并实现了一个基于新浪开放平台和Oauth的实现2.0 微博信息采集系统。系统实现的主要功能有: (1) 抓取微博大厅滚动的微博及其评论(2) 抓取微博用户的好友及其相互关系。通过线程池和数据库实现微博信息的抓取和存储,通过prefuse的API将用户关系图形化展示,从实际运行效果分析,抓取系统可以满足各种SNS应用的内容填充,和网络用户的社交网络。网络关系分析。【关键词】 Oauth2.0 ; 新浪开放平台;社交网络关系;prefuse 1 引言1.1 研究背景及意义微博迎来了真正的微博时代。微博内容短、写作门槛低、传播渠道便捷、多元化、同步化,使得信息生产趋于零时间。与其他信息交流方式不同,微博最大的特点是技术上的可移植性。2009年,3G牌照的发放标志着移动互联网时代的到来。手机和互联网这两个中国发展最快的媒体开始融合在一起,为微博的快速扩张做出了技术贡献。与传统博客相比,
用户可以通过多种方式登录微博,发布微博。尤其是手机与微博的绑定,让这个新媒体更贴近微博用户,满足4A的要素,即Anything,anywhere,anyone,anytime。任何用户都可以随时随地发布任何内容。从此,人们的信息交流得到了前所未有的解放。微博信息采集系统通过开放平台的API采集我们需要的信息,并在运营初期为各种SNS[1]社区应用丰富其数据量和用户量,以吸引更多用户关注和使用. SNS 社区交友是现在网络用户相互交流最重要的方式。目前最流行的SNS网络是开心网、人人网和各大微博。他们之中,新浪微博拥有最多的活跃用户。信息采集功能。整个系统的框架具有很强的扩展性,可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。信息采集功能。整个系统的框架具有很强的扩展性,可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。信息采集功能。整个系统的框架具有很强的扩展性,可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。并以图形方式展示网络用户之间的社交网络关系1.2 本项目的主要工作 本文要解决的主要问题是抓取新浪微博Lobby Data的微博及其相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。并以图形方式展示网络用户之间的社交网络关系1.2 本项目的主要工作 本文要解决的主要问题是抓取新浪微博Lobby Data的微博及其相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。
并通过 Prefuse 将捕获到的微博用户的好友关系可视化。实施全自动捕获、解析和数据存储过程。大大提高了信息采集的工作效率,大大降低了信息采集的错误率。满足企事业单位对微博信息的内容需求和网络微博信息采集系统用户的社会关系分析。2 新浪微博开放平台2.1 微博用户授权与认证2.1.1 新浪微博应用创建新浪微博开放平台允许所有微博用户创建自己的应用,用户可以创建您自己的应用只要填写开发者的详细信息和应用的相关信息即可。应用创建成功后,开发者会得到应用的APP KEY和Sercret Key。我们通过这两个键进行相关的技术开发工作。并通过这两个键唯一标识我们的应用程序。其新浪微博应用创建与发布流程图如图1所示。 图1 新浪开放平台应用创建流程及下个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。我们通过这两个键进行相关的技术开发工作。并通过这两个键唯一标识我们的应用程序。其新浪微博应用创建与发布流程图如图1所示。 图1 新浪开放平台应用创建流程及下个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。我们通过这两个键进行相关的技术开发工作。并通过这两个键唯一标识我们的应用程序。其新浪微博应用创建与发布流程图如图1所示。 图1 新浪开放平台应用创建流程及下个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。图1 新浪开放平台应用创建流程及下一个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。图1 新浪开放平台应用创建流程及下一个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。
OAuth 允许用户提供令牌而不是用户名和密码来访问他们存储在特定服务提供商处的数据。每个令牌授权特定的网站(例如,视频编辑器网站)在指定的时间段(例如,接下来的 2 小时)内访问特定资源(例如,只是某个专辑)。 )。通过这种方式,OAuth 允许用户授权第三方网站访问他们存储在另一个服务提供商上的信息,而无需共享他们的访问权限或他们数据的全部内容。与 OAuth1.0 相比,OAuth2.0 的整个授权验证过程更简单、更安全。也是新浪微博开发平台未来最重要的用户认证和授权方式。使用新的 2. 0 授权认证协议。开发者只需要调用oauth2/authorize接口引导用户进行授权,授权后重定向的网页获取代码后,从服务器的oauth2/access_token接口交换access_token,即可使用access_token。
使用新浪微博开放平台api同步微博内容至自己网站(腾讯微博开放平台正式上线,为开发者和用户提供开放数据分享与传播平台)
网站优化 • 优采云 发表了文章 • 0 个评论 • 255 次浏览 • 2022-04-06 02:18
12月16日,腾讯微博开放平台正式上线。基于腾讯微博系统,为开发者和用户提供一个开放的数据共享和传播平台。广大开发者和用户登录平台后,可以利用平台提供的开放API接口创建应用程序,从微博系统中获取信息,或者向整个微博系统传播新的信息。就在几天前,新浪微博创新基金刚刚开始接受申请,主要面向新浪微博应用的创业者。由此可以看出,国内微博应用市场正在逐渐竞争,竞争也越来越激烈。
据腾讯微博开放平台网站介绍,该开放平台基于腾讯微博系统,定位为开放数据共享传播平台。登录平台创建应用后,您可以通过从平台获取的应用App Key和App Secret,使用各种API实现丰富的应用功能。应用依赖用户账号访问其微博账号读写内容,首次使用时需要用户授权,授权系统使用Oauth机制。获得用户授权后,应用可以获取当前用户的用户名、头像图片、当前用户的听众和收听名单等信息,
获得用户账号授权后,可以使用平台提供的API创建以下功能:
快速分享内容到微博。腾讯微博用户关系开放,互动性强。通过用户之间的交互和传播,信息可以呈几何级数传播。传播的内容也会在微博网站上展示,用户点击链接后可以直接进入指定页面,起到为网站吸引流量的作用。基于微博互动建立用户关系。通过向用户展示最新的微博信息,并提供即时收听功能,帮助用户建立互动关系。平台提供的微博秀应用程序让您只需几行 HTML 代码,即可在 网站 上显示您的新微博更新。获取微博信息作为内容。您可以获取整个微博平台的最新微博信息,或者指定用户发布/收听的微博信息,并作为内容展示在您的网站/软件中。腾讯微博有很多名人和专业人士活跃,最新最真实的新闻可以作为内容。
开发者构建微博应用后,可以将应用源字段提交给腾讯审核。申请提交审核通过后,申请发送的微博信息将在腾讯微博等应用中显示,并附有申请的来源字段和来源URL信息。当用户点击时,会打开网站,为网站带来流量。
源字段的审计内容包括:
来源字段 - 我们要从您的应用发布,来源名称“来自 ***” 在腾讯微博和其他微博中显示的源链接 - 我们希望来自腾讯微博或其他微博的用户,点击时打开的网页的 URL
查看源字段的提交标准:
创建时间超过15天。接口调用累计超过10000次。用户授权数超过100。
腾讯微博开放平台还提供了一些官方微博应用供开发者学习使用,包括:
一键直播——将一键直播嵌入到您的网站中,访问者可以直接将网页信息传播到腾讯微博。在分享信息的同时,用户可以通过源链接进入你的网站,从而增加流量。微博秀 - 使用微博秀,将生成的代码放在您的博客、网站 或其他支持 html 代码的位置,以向网络访问者展示您在腾讯微博上的最新广播和视频。观众。微博广播站 - 使用微博广播站,将生成的代码放在你的博客、网站或其他支持html代码的位置,不仅可以显示你最近的20条广播,登录腾讯微博后,你还可以直接在这里写微博,让更多的人知道和倾听你。微博签名文件——使用微博签名文件,
对于应用开发者最关心的开发平台API,详细说明见网站:
API 文档 - 提供 API 接口 url、格式、http 请求方法等 Oauth 授权说明 - 介绍 Oauth 认证机制和请求授权方法 API 调用权限 - 说明不同权限的开发者可以调用的 API 范围,以及调用频率通话限制
其中,值得关注的是开放平台对API读写频率的要求:
一级授权
读取请求:每个 API 单用户每小时 150 次(包括获取公共时间线、主页时间线等)
写入请求:不可用中间授权读取请求:每个用户每小时每个 API 150
写请求:每个用户每小时最多100次(包括推文、转播、对话、私信、收听等)腾讯合作伙伴授权的读取请求:每个API单用户每小时5000次
写请求:每个用户每小时最多400次(包括推特、转播、对话、私信、收听等)
如果开发者认为 API 调用次数不够,腾讯对此进行了解释:
首先,微博API技术是一种HTTP轮询(POLLING)协议,而不是通过实时推送获取信息。为了保证用户能够获取到最新的微博信息,需要调用API定时阅读。根据实际微博信息更新统计,建议阅读频率控制在1分钟/次以上,或者通过:
如果用户数量过多,当前对 API 调用频率的限制是不够的。在您的申请数据达到相应标准后,您可以通过电子邮件申请更高级别的通话权限。审核通过后,官方会进行调整。您可以查看应用程序当前的API调用权限级别。
微博应用市场近期火爆。就在几天前,InfoQ 中文站刚刚报道了新浪微博开发者创新基金向微博应用创业者敞开大门:
2亿元规模的中国微博开发者创新基金正式开始接受申请,为国内中小创业公司或个人创业者提供一个施展才华的平台……(基金)旨在专注于新浪微博平台 公司第三方应用开发者提供风险投资,同时为开发者提供必要的创业相关辅导,帮助开发者加速实现创业梦想。基金投资项目的单笔投资金额主要在300万以下,但对较高的投资金额没有限制。应用开发项目要求为:已在新浪微博开放平台申请APP密钥的开发者,
由此可见,随着微博的火爆,互联网企业开始关注这个市场,鼓励第三方开发和部署微博应用。一方面可以增加自己微博的知名度,另一方面可以将自己的微博分享给第三方。博市有望盈利“蛋糕”。无论是腾讯微博开放平台还是新浪微博创新基金,都是微博应用开发者迎来大发展的好机会。InfoQ中文站也将继续关注相关动态。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(腾讯微博开放平台正式上线,为开发者和用户提供开放数据分享与传播平台)
12月16日,腾讯微博开放平台正式上线。基于腾讯微博系统,为开发者和用户提供一个开放的数据共享和传播平台。广大开发者和用户登录平台后,可以利用平台提供的开放API接口创建应用程序,从微博系统中获取信息,或者向整个微博系统传播新的信息。就在几天前,新浪微博创新基金刚刚开始接受申请,主要面向新浪微博应用的创业者。由此可以看出,国内微博应用市场正在逐渐竞争,竞争也越来越激烈。
据腾讯微博开放平台网站介绍,该开放平台基于腾讯微博系统,定位为开放数据共享传播平台。登录平台创建应用后,您可以通过从平台获取的应用App Key和App Secret,使用各种API实现丰富的应用功能。应用依赖用户账号访问其微博账号读写内容,首次使用时需要用户授权,授权系统使用Oauth机制。获得用户授权后,应用可以获取当前用户的用户名、头像图片、当前用户的听众和收听名单等信息,
获得用户账号授权后,可以使用平台提供的API创建以下功能:
快速分享内容到微博。腾讯微博用户关系开放,互动性强。通过用户之间的交互和传播,信息可以呈几何级数传播。传播的内容也会在微博网站上展示,用户点击链接后可以直接进入指定页面,起到为网站吸引流量的作用。基于微博互动建立用户关系。通过向用户展示最新的微博信息,并提供即时收听功能,帮助用户建立互动关系。平台提供的微博秀应用程序让您只需几行 HTML 代码,即可在 网站 上显示您的新微博更新。获取微博信息作为内容。您可以获取整个微博平台的最新微博信息,或者指定用户发布/收听的微博信息,并作为内容展示在您的网站/软件中。腾讯微博有很多名人和专业人士活跃,最新最真实的新闻可以作为内容。
开发者构建微博应用后,可以将应用源字段提交给腾讯审核。申请提交审核通过后,申请发送的微博信息将在腾讯微博等应用中显示,并附有申请的来源字段和来源URL信息。当用户点击时,会打开网站,为网站带来流量。
源字段的审计内容包括:
来源字段 - 我们要从您的应用发布,来源名称“来自 ***” 在腾讯微博和其他微博中显示的源链接 - 我们希望来自腾讯微博或其他微博的用户,点击时打开的网页的 URL
查看源字段的提交标准:
创建时间超过15天。接口调用累计超过10000次。用户授权数超过100。
腾讯微博开放平台还提供了一些官方微博应用供开发者学习使用,包括:
一键直播——将一键直播嵌入到您的网站中,访问者可以直接将网页信息传播到腾讯微博。在分享信息的同时,用户可以通过源链接进入你的网站,从而增加流量。微博秀 - 使用微博秀,将生成的代码放在您的博客、网站 或其他支持 html 代码的位置,以向网络访问者展示您在腾讯微博上的最新广播和视频。观众。微博广播站 - 使用微博广播站,将生成的代码放在你的博客、网站或其他支持html代码的位置,不仅可以显示你最近的20条广播,登录腾讯微博后,你还可以直接在这里写微博,让更多的人知道和倾听你。微博签名文件——使用微博签名文件,
对于应用开发者最关心的开发平台API,详细说明见网站:
API 文档 - 提供 API 接口 url、格式、http 请求方法等 Oauth 授权说明 - 介绍 Oauth 认证机制和请求授权方法 API 调用权限 - 说明不同权限的开发者可以调用的 API 范围,以及调用频率通话限制
其中,值得关注的是开放平台对API读写频率的要求:
一级授权
读取请求:每个 API 单用户每小时 150 次(包括获取公共时间线、主页时间线等)
写入请求:不可用中间授权读取请求:每个用户每小时每个 API 150
写请求:每个用户每小时最多100次(包括推文、转播、对话、私信、收听等)腾讯合作伙伴授权的读取请求:每个API单用户每小时5000次
写请求:每个用户每小时最多400次(包括推特、转播、对话、私信、收听等)
如果开发者认为 API 调用次数不够,腾讯对此进行了解释:
首先,微博API技术是一种HTTP轮询(POLLING)协议,而不是通过实时推送获取信息。为了保证用户能够获取到最新的微博信息,需要调用API定时阅读。根据实际微博信息更新统计,建议阅读频率控制在1分钟/次以上,或者通过:
如果用户数量过多,当前对 API 调用频率的限制是不够的。在您的申请数据达到相应标准后,您可以通过电子邮件申请更高级别的通话权限。审核通过后,官方会进行调整。您可以查看应用程序当前的API调用权限级别。
微博应用市场近期火爆。就在几天前,InfoQ 中文站刚刚报道了新浪微博开发者创新基金向微博应用创业者敞开大门:
2亿元规模的中国微博开发者创新基金正式开始接受申请,为国内中小创业公司或个人创业者提供一个施展才华的平台……(基金)旨在专注于新浪微博平台 公司第三方应用开发者提供风险投资,同时为开发者提供必要的创业相关辅导,帮助开发者加速实现创业梦想。基金投资项目的单笔投资金额主要在300万以下,但对较高的投资金额没有限制。应用开发项目要求为:已在新浪微博开放平台申请APP密钥的开发者,
由此可见,随着微博的火爆,互联网企业开始关注这个市场,鼓励第三方开发和部署微博应用。一方面可以增加自己微博的知名度,另一方面可以将自己的微博分享给第三方。博市有望盈利“蛋糕”。无论是腾讯微博开放平台还是新浪微博创新基金,都是微博应用开发者迎来大发展的好机会。InfoQ中文站也将继续关注相关动态。
使用新浪微博开放平台api同步微博内容至自己网站(修改SDK包里面Weibo.java类的App和AppSecret)
网站优化 • 优采云 发表了文章 • 0 个评论 • 64 次浏览 • 2022-04-05 08:22
使用新浪微博开放平台的API,首先要获取新浪分配的App key和App Secret。以下是我创建应用后sina分配的App key和App Secret(这个要保密)。
然后下载微博SDK,我用Java的weibo4j。目前提供以下语言版本:
将SDK包中Weibo.java类的App Key和App Secret修改为刚刚获取的App Key和App Secret,如下图所示:
完成后,就可以根据提供的Demo开始编写代码了。如下:
WebOAuth.java用于初始化Weibo.java类所需的App Key和App Secret,并提供getRequestToken()和gettAccessToken()方法获取Request Token和Access Token。所需的参数显示在代码中。此外,还提供了一个发布文本微博的方法update()。
<p>package weibo4j.examples;
import weibo4j.Status;
import weibo4j.Weibo;
import weibo4j.WeiboException;
import weibo4j.http.AccessToken;
import weibo4j.http.RequestToken;
import java.io.UnsupportedEncodingException;
// Web 方式认证
public class WebOAuth {
private Weibo weibo;
public WebOAuth(){
// 准备好Consumer Key、Consumer Secret
// 对应于新浪微博应用就是申请到的 App key 和 Secret key
System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY);
System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET);
weibo = new Weibo();
}
// 根据传入的 callback_url 获取 request token
public RequestToken getRequestToken(String backUrl) {
try {
// 指定 callback_url 并获得 request token
RequestToken requestToken = weibo.getOAuthRequestToken(backUrl);
System.out.println("Request token: " + requestToken.getToken());
System.out.println("Request token secret: " + requestToken.getTokenSecret());
return requestToken;
} catch (Exception e) {
System.out.println("获取Request token发生异常!");
e.printStackTrace();
return null;
}
}
// 根据传入的 request token 和 verifier 获取 access token
public AccessToken gettAccessToken(RequestToken requestToken, String verifier) {
try {
AccessToken accessToken = weibo.getOAuthAccessToken(requestToken
.getToken(), requestToken.getTokenSecret(), verifier);
System.out.println("Access token: " + accessToken.getToken());
System.out.println("Access token secret: " + accessToken.getTokenSecret());
return accessToken;
} catch (Exception e) {
System.out.println("获取Access token发生异常!");
e.printStackTrace();
return null;
}
}
// 根据传入的 Access Token 和内容发表微博
public void update(AccessToken access, String content) {
try {
weibo.setToken(access.getToken(), access.getTokenSecret());
content = new String(content.getBytes("GBK"), "UTF-8");
Status status = weibo.updateStatus(content);
System.out.println("成功发表微博:" + status.getText() + ".");
} catch (UnsupportedEncodingException e) {
System.out.println("微博内容转编码发生异常!");
e.printStackTrace();
} catch (WeiboException e) {
System.out.println("发表微博发生异常!");
e.printStackTrace();
}
}
}
</p>
request.jsp,用于提供callback_url(这里我们自定义为下面的callback.jsp),获取RequestToken后,将RequestToken保存在Session中,并将页面重定向到callback.jsp进行验证,授权。
<p>
请点击进行Web方式的OAuth认证!</a>
</p>
callback.jsp,在上一步重定向后,会在callback_url后面附加oauth_verifier参数。这时候我们根据Session中保存的RequestToken和获取到的oauth_verifier参数申请AccessToken。获取到AccessToken后,我们将页面重定向到writeWeibo.html,即写微博的页面。
<p>
</p>
writeWeibo.html,一个很简单的HTML文件。
<p>
发布sina微博
请在这里写上140字符以内的文本:</br>
测试新浪微博!</br>
</br>
</p>
<p>
</p>
在运行之前,我们需要准备好Tomcat,并将上述源文件放到正确的目录下。另外SDK包中收录的commons-httpclient-3.1.jar包也要加到\WEB-INF\lib目录下,还有我编译打包的weibo4j.jar (里面是新浪微博开放平台的具体Java实现)。
运行Tomcat,在浏览器中访问request.jsp页面,如下图:
点击链接,如下图(注意地址栏的变化):
地址栏中的网址如下:
://localhost:8080/sinaweibo/callback.jsp
填写具体有效的新浪微博账号、密码和授权。以下是我用于测试和授权的微博账号填写的结果:
地址栏中的网址如下:
:8080/sinaweibo/writeWeibo.html
点击“发布”,如下图:
登录微博查看,如下图:
查看此帐号授权的应用列表:
到此为止,关于使用新浪微博开放平台发布微博的OAuth方式大概就是这个过程了。
总结:
1、其实还有很多细节没办法讲。我也试了很多次,一点点找到问题,明白问题,然后解决问题;
2、如果我们登录新浪微博的账号信息cookie已经保存在浏览器中,那么授权时就不需要输入账号信息了,当然也可以不修改用于授权的当前账户;
3、还有一些信息是在控制台输入的,比如Token、URL、服务器返回信息,截图中没有给出。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(修改SDK包里面Weibo.java类的App和AppSecret)
使用新浪微博开放平台的API,首先要获取新浪分配的App key和App Secret。以下是我创建应用后sina分配的App key和App Secret(这个要保密)。

然后下载微博SDK,我用Java的weibo4j。目前提供以下语言版本:

将SDK包中Weibo.java类的App Key和App Secret修改为刚刚获取的App Key和App Secret,如下图所示:

完成后,就可以根据提供的Demo开始编写代码了。如下:
WebOAuth.java用于初始化Weibo.java类所需的App Key和App Secret,并提供getRequestToken()和gettAccessToken()方法获取Request Token和Access Token。所需的参数显示在代码中。此外,还提供了一个发布文本微博的方法update()。
<p>package weibo4j.examples;
import weibo4j.Status;
import weibo4j.Weibo;
import weibo4j.WeiboException;
import weibo4j.http.AccessToken;
import weibo4j.http.RequestToken;
import java.io.UnsupportedEncodingException;
// Web 方式认证
public class WebOAuth {
private Weibo weibo;
public WebOAuth(){
// 准备好Consumer Key、Consumer Secret
// 对应于新浪微博应用就是申请到的 App key 和 Secret key
System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY);
System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET);
weibo = new Weibo();
}
// 根据传入的 callback_url 获取 request token
public RequestToken getRequestToken(String backUrl) {
try {
// 指定 callback_url 并获得 request token
RequestToken requestToken = weibo.getOAuthRequestToken(backUrl);
System.out.println("Request token: " + requestToken.getToken());
System.out.println("Request token secret: " + requestToken.getTokenSecret());
return requestToken;
} catch (Exception e) {
System.out.println("获取Request token发生异常!");
e.printStackTrace();
return null;
}
}
// 根据传入的 request token 和 verifier 获取 access token
public AccessToken gettAccessToken(RequestToken requestToken, String verifier) {
try {
AccessToken accessToken = weibo.getOAuthAccessToken(requestToken
.getToken(), requestToken.getTokenSecret(), verifier);
System.out.println("Access token: " + accessToken.getToken());
System.out.println("Access token secret: " + accessToken.getTokenSecret());
return accessToken;
} catch (Exception e) {
System.out.println("获取Access token发生异常!");
e.printStackTrace();
return null;
}
}
// 根据传入的 Access Token 和内容发表微博
public void update(AccessToken access, String content) {
try {
weibo.setToken(access.getToken(), access.getTokenSecret());
content = new String(content.getBytes("GBK"), "UTF-8");
Status status = weibo.updateStatus(content);
System.out.println("成功发表微博:" + status.getText() + ".");
} catch (UnsupportedEncodingException e) {
System.out.println("微博内容转编码发生异常!");
e.printStackTrace();
} catch (WeiboException e) {
System.out.println("发表微博发生异常!");
e.printStackTrace();
}
}
}
</p>
request.jsp,用于提供callback_url(这里我们自定义为下面的callback.jsp),获取RequestToken后,将RequestToken保存在Session中,并将页面重定向到callback.jsp进行验证,授权。
<p>
请点击进行Web方式的OAuth认证!</a>
</p>
callback.jsp,在上一步重定向后,会在callback_url后面附加oauth_verifier参数。这时候我们根据Session中保存的RequestToken和获取到的oauth_verifier参数申请AccessToken。获取到AccessToken后,我们将页面重定向到writeWeibo.html,即写微博的页面。
<p>
</p>
writeWeibo.html,一个很简单的HTML文件。
<p>
发布sina微博
请在这里写上140字符以内的文本:</br>
测试新浪微博!</br>
</br>
</p>
<p>
</p>
在运行之前,我们需要准备好Tomcat,并将上述源文件放到正确的目录下。另外SDK包中收录的commons-httpclient-3.1.jar包也要加到\WEB-INF\lib目录下,还有我编译打包的weibo4j.jar (里面是新浪微博开放平台的具体Java实现)。
运行Tomcat,在浏览器中访问request.jsp页面,如下图:

点击链接,如下图(注意地址栏的变化):

地址栏中的网址如下:
://localhost:8080/sinaweibo/callback.jsp
填写具体有效的新浪微博账号、密码和授权。以下是我用于测试和授权的微博账号填写的结果:

地址栏中的网址如下:
:8080/sinaweibo/writeWeibo.html
点击“发布”,如下图:

登录微博查看,如下图:

查看此帐号授权的应用列表:

到此为止,关于使用新浪微博开放平台发布微博的OAuth方式大概就是这个过程了。
总结:
1、其实还有很多细节没办法讲。我也试了很多次,一点点找到问题,明白问题,然后解决问题;
2、如果我们登录新浪微博的账号信息cookie已经保存在浏览器中,那么授权时就不需要输入账号信息了,当然也可以不修改用于授权的当前账户;
3、还有一些信息是在控制台输入的,比如Token、URL、服务器返回信息,截图中没有给出。
使用新浪微博开放平台api同步微博内容至自己网站(基于新浪微博的移动电子商务系统Android客户端软件应运而生软件)
网站优化 • 优采云 发表了文章 • 0 个评论 • 37 次浏览 • 2022-04-05 08:19
基于新浪微博的移动电子商务系统
Android是基于Linux内核的操作系统。以其独有的开放性,广泛应用于智能手机等智能终端,并迅速发展成为市场占有率最大的移动操作系统。电子商务近年来发展迅速,通过互联网进行交易已成为一种趋势。移动电子商务作为智能移动终端与电子商务的结合,具有巨大的发展潜力。微博是微博的简称,是一个基于用户关系的信息共享、传播和获取平台。用户以文字形式更新信息,实现即时分享。微博的开放性和即时性使其成为增长最快的互联网业务。所以,借助微博平台推动移动电子商务的发展具有巨大的市场价值,但目前市场上还没有基于微博平台的移动电子商务软件。在此背景下,基于微博的移动电子商务系统安卓客户端软件应运而生。由于新浪微博是中国最受欢迎的微博平台,本系统以新浪微博为开发平台。新浪微博安卓平台SDK(软件开发工具包)为第三方微博应用提供简单易用的微博API调用服务,让第三方客户端无需了解复杂的验证和API(应用程序编程接口)调用流程。并且可以实现分享到微博的功能,可以将文字,或者多媒体信息分享到内置的分享页面,
该 SDK 封装了 HTTP 请求和 Json 信息的解析。我们只需要实现页面相关功能的开发,大大减轻了程序员的开发压力。本文所讨论的系统开发的核心内容是基于Android平台,结合新浪微博API实现基于微博的移动电子商务系统Android客户端软件。本文介绍了移动电子商务、Android开发平台和微博开发平台的相关技术,分析了目前国内外电子商务、Android移动平台和微博系统的应用,设计了一个基于Android的移动电子商务系统。在新浪微博客户端软件实现了登录注册模块、商家信息模块、微博编辑模块、采集模块、个人信息模块、二维码模块、天气查询模块。最终,该系统使用户无需刻意找时间在线搜索产品。用户只要拥有一部安卓手机,就可以随时随地浏览商家促销信息。不仅解放了时间和空间的限制,还让用户可以更有效地利用时间,可以利用公交车、地铁等多条等待时间获取商业信息。完成基于微博的电子商务系统安卓客户端软件基本功能开发。目前,该软件可以正常运行。大大节省了人们挑选物品的时间,加快了商品的流通,
立即下载 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(基于新浪微博的移动电子商务系统Android客户端软件应运而生软件)
基于新浪微博的移动电子商务系统
Android是基于Linux内核的操作系统。以其独有的开放性,广泛应用于智能手机等智能终端,并迅速发展成为市场占有率最大的移动操作系统。电子商务近年来发展迅速,通过互联网进行交易已成为一种趋势。移动电子商务作为智能移动终端与电子商务的结合,具有巨大的发展潜力。微博是微博的简称,是一个基于用户关系的信息共享、传播和获取平台。用户以文字形式更新信息,实现即时分享。微博的开放性和即时性使其成为增长最快的互联网业务。所以,借助微博平台推动移动电子商务的发展具有巨大的市场价值,但目前市场上还没有基于微博平台的移动电子商务软件。在此背景下,基于微博的移动电子商务系统安卓客户端软件应运而生。由于新浪微博是中国最受欢迎的微博平台,本系统以新浪微博为开发平台。新浪微博安卓平台SDK(软件开发工具包)为第三方微博应用提供简单易用的微博API调用服务,让第三方客户端无需了解复杂的验证和API(应用程序编程接口)调用流程。并且可以实现分享到微博的功能,可以将文字,或者多媒体信息分享到内置的分享页面,
该 SDK 封装了 HTTP 请求和 Json 信息的解析。我们只需要实现页面相关功能的开发,大大减轻了程序员的开发压力。本文所讨论的系统开发的核心内容是基于Android平台,结合新浪微博API实现基于微博的移动电子商务系统Android客户端软件。本文介绍了移动电子商务、Android开发平台和微博开发平台的相关技术,分析了目前国内外电子商务、Android移动平台和微博系统的应用,设计了一个基于Android的移动电子商务系统。在新浪微博客户端软件实现了登录注册模块、商家信息模块、微博编辑模块、采集模块、个人信息模块、二维码模块、天气查询模块。最终,该系统使用户无需刻意找时间在线搜索产品。用户只要拥有一部安卓手机,就可以随时随地浏览商家促销信息。不仅解放了时间和空间的限制,还让用户可以更有效地利用时间,可以利用公交车、地铁等多条等待时间获取商业信息。完成基于微博的电子商务系统安卓客户端软件基本功能开发。目前,该软件可以正常运行。大大节省了人们挑选物品的时间,加快了商品的流通,
立即下载
使用新浪微博开放平台api同步微博内容至自己网站(调用微博开放平台API开发自己的微博应用,第一步学**一)
网站优化 • 优采云 发表了文章 • 0 个评论 • 66 次浏览 • 2022-04-03 07:14
新浪微博开放平台API使用研究。docxOAuth和新浪微博开放平台介绍。在新浪微博上创建应用程序之前,我获得了Appkey 和Secretkey 来调用新浪微博开放平台APT Learning****1 • 这到底是怎么回事。前几天,我连续4天没课,所以我很耐心地想知道如何使用APIo。新浪微博开放平台虽然提供了多种语言的开发SDK下载,但也收录了一些基本接口调用的demo和接口说明。文档。但是经过几天的耐心尝试,感觉新浪微博开放平台上的入门指南与下载的Java开发包weibodj包中的Demo使用注释有些不一致。再加上他们理解能力有限,他们遇到了很多困难的问题。幸运的是,我没有放弃尝试理解它。废话不多说,接下来就是我的学习过程了。如果你想通过调用新浪微博开放平台API来开发自己的微博应用,第一步是要有一个siw微博账号和一个CSDN账号,因为我们需要同时用这两个账号创建一个微博应用,从而获得Appkey和CSDN账号。密钥。那么Appkey和Secretkey有什么用呢?其实我只是看了simena微博开放平台上的一系列说明,对Appkey和Secretkey的使用并不是很了解。因为了解OAuth认证和授权的全过程比较重要,
当我第一次遇到完全没有概念的OAuth时,我认为没有戏剧就不可能学习****。幸运的是,我找到了下面的文章,对理解OAuth很有帮助。链接如下: OAUTH协议介绍 ***应用中用到了“科鼎OAuth安全协议”的Java应用编程丨|〔奔奔I》OAuth在OAuth中有3个参与者,即User>ServiceProviderConsumer □假设我想基于新浪微博开放平台开发一个应用(App),供其他新浪微博用户使用,它们的对应关系如下: User=>想要使用这个应用的新浪微博用户 Provider=>新浪微博开放平台Consumer=>App 其实我们的App相当于User和PtovideT(新浪微博平台)。第三方应用程序。作为第三方App,要想访问用户存储在新浪微博平台上的资源,必须经过一系列的认证和授权后才能工作。下面是根据我对整个OAuth认证授权过程的理解绘制的图(可以跳过,对以下概念有一定了解后再看流程图): 8:引导用户Callback_URL()+OAuthToken&Verifier7:Authorize Consumer()/2:返回ConsumerKey&Secret()\5:返回RequstToken&Secret()0:essToken&Secret()分散请求RequstToken()9:essTyLen()\\^:Registration()■-+RequestToken +CallbackURL , 提供者+RequstToken&SecretConsumer6:; 引导用户进入认证页面(7ll:essToken访问用户'
Consumer 向 Provider 申请,希望调用其开放的 API。申请通过后,Provider将其分配给符合其要求的Consumer。JTJ 是唯一的,用于标识满足提供者要求的消费者。对应上图中的流程1和流程2。RequestToken、RequestSecret:当User访问Consumer,想要获取其特殊服务时,该服务由Consumer整合存储在Provider中的User自身资源后返回。在这种情况下,Consumer 向 Provider 请求获取一个 RequestToken,用于唯一标识 Consumer 和 User 之间的具体关联。对应上图中的进程3、4、5。在过程 6 中,Consumer 必须将 User 引导至 Provider 提供的 OAuth 认证授权页面。实际上,浏览器被重定向到附加了 RequestToken 和 RequestSecret 参数的 authenticationURL。此 URL 由 Provider 提供。接下来,在流程 7 和流程 8 中,User 对 Consumer 进行授权(通常是通过输入账号和密码进行登录),Provider 将重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL参数。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 浏览器被重定向到附加了 RequestToken 和 RequestSecret 参数的 authenticationURL。此 URL 由 Provider 提供。接下来,在流程 7 和流程 8 中,User 对 Consumer 进行授权(通常是通过输入账号和密码进行登录),Provider 将重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL参数。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 浏览器被重定向到附加了 RequestToken 和 RequestSecret 参数的 authenticationURL。此 URL 由 Provider 提供。接下来,在流程 7 和流程 8 中,User 对 Consumer 进行授权(通常是通过输入账号和密码进行登录),Provider 将重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL参数。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 Provider 会重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL 参数中。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 Provider 会重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL 参数中。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(调用微博开放平台API开发自己的微博应用,第一步学**一)
新浪微博开放平台API使用研究。docxOAuth和新浪微博开放平台介绍。在新浪微博上创建应用程序之前,我获得了Appkey 和Secretkey 来调用新浪微博开放平台APT Learning****1 • 这到底是怎么回事。前几天,我连续4天没课,所以我很耐心地想知道如何使用APIo。新浪微博开放平台虽然提供了多种语言的开发SDK下载,但也收录了一些基本接口调用的demo和接口说明。文档。但是经过几天的耐心尝试,感觉新浪微博开放平台上的入门指南与下载的Java开发包weibodj包中的Demo使用注释有些不一致。再加上他们理解能力有限,他们遇到了很多困难的问题。幸运的是,我没有放弃尝试理解它。废话不多说,接下来就是我的学习过程了。如果你想通过调用新浪微博开放平台API来开发自己的微博应用,第一步是要有一个siw微博账号和一个CSDN账号,因为我们需要同时用这两个账号创建一个微博应用,从而获得Appkey和CSDN账号。密钥。那么Appkey和Secretkey有什么用呢?其实我只是看了simena微博开放平台上的一系列说明,对Appkey和Secretkey的使用并不是很了解。因为了解OAuth认证和授权的全过程比较重要,
当我第一次遇到完全没有概念的OAuth时,我认为没有戏剧就不可能学习****。幸运的是,我找到了下面的文章,对理解OAuth很有帮助。链接如下: OAUTH协议介绍 ***应用中用到了“科鼎OAuth安全协议”的Java应用编程丨|〔奔奔I》OAuth在OAuth中有3个参与者,即User>ServiceProviderConsumer □假设我想基于新浪微博开放平台开发一个应用(App),供其他新浪微博用户使用,它们的对应关系如下: User=>想要使用这个应用的新浪微博用户 Provider=>新浪微博开放平台Consumer=>App 其实我们的App相当于User和PtovideT(新浪微博平台)。第三方应用程序。作为第三方App,要想访问用户存储在新浪微博平台上的资源,必须经过一系列的认证和授权后才能工作。下面是根据我对整个OAuth认证授权过程的理解绘制的图(可以跳过,对以下概念有一定了解后再看流程图): 8:引导用户Callback_URL()+OAuthToken&Verifier7:Authorize Consumer()/2:返回ConsumerKey&Secret()\5:返回RequstToken&Secret()0:essToken&Secret()分散请求RequstToken()9:essTyLen()\\^:Registration()■-+RequestToken +CallbackURL , 提供者+RequstToken&SecretConsumer6:; 引导用户进入认证页面(7ll:essToken访问用户'
Consumer 向 Provider 申请,希望调用其开放的 API。申请通过后,Provider将其分配给符合其要求的Consumer。JTJ 是唯一的,用于标识满足提供者要求的消费者。对应上图中的流程1和流程2。RequestToken、RequestSecret:当User访问Consumer,想要获取其特殊服务时,该服务由Consumer整合存储在Provider中的User自身资源后返回。在这种情况下,Consumer 向 Provider 请求获取一个 RequestToken,用于唯一标识 Consumer 和 User 之间的具体关联。对应上图中的进程3、4、5。在过程 6 中,Consumer 必须将 User 引导至 Provider 提供的 OAuth 认证授权页面。实际上,浏览器被重定向到附加了 RequestToken 和 RequestSecret 参数的 authenticationURL。此 URL 由 Provider 提供。接下来,在流程 7 和流程 8 中,User 对 Consumer 进行授权(通常是通过输入账号和密码进行登录),Provider 将重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL参数。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 浏览器被重定向到附加了 RequestToken 和 RequestSecret 参数的 authenticationURL。此 URL 由 Provider 提供。接下来,在流程 7 和流程 8 中,User 对 Consumer 进行授权(通常是通过输入账号和密码进行登录),Provider 将重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL参数。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 浏览器被重定向到附加了 RequestToken 和 RequestSecret 参数的 authenticationURL。此 URL 由 Provider 提供。接下来,在流程 7 和流程 8 中,User 对 Consumer 进行授权(通常是通过输入账号和密码进行登录),Provider 将重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL参数。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 Provider 会重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL 参数中。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 Provider 会重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL 参数中。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问
使用新浪微博开放平台api同步微博内容至自己网站(新浪微博开放平台做个实践,开发一个功能简单的android客户端)
网站优化 • 优采云 发表了文章 • 0 个评论 • 317 次浏览 • 2022-04-02 00:12
介绍
最近不太忙,花点时间学习android app开发。经过两周的学习,我在学习的同时也写了很多demo例子,可以从基本控件和基本动画效果的demo合集中放出,不断更新下载。
从这周开始,我打算以新浪微博开放平台为实践,开发一个功能简单的安卓客户端,尽可能的完善功能。
今天的内容
上图是这个客户端的主界面。目前只获取前20条数据。您也可以单击刷新来刷新数据。功能比较简单。
操作系统是android2.2.
用到的技术点包括ListView、自定义ListAdapter、多线程相关Message、Handler、认证相关OAuth、异步加载用户图片等。
新浪微博的验证使用signpost的OAuth组件,不使用微博的SDK。
源代码下载:
关于 OAuth 身份验证
OAuth是目前比较流行的一种授权方案。twitter、facebook、google等大型开放平台均支持oauth认证方式,国内新浪微博、腾讯微博、163微博等开放平台也已支持。这种验证模式。
来自维基百科的引文
“oauth 是一种开放标准,允许用户允许第三方应用程序访问用户放置在 网站 上的私有资源,而无需将用户名和密码传递给第三方应用程序。oauth 允许用户提供一个令牌,而不是用户名和密码来访问他们存储在特定服务提供商处的数据。”
例如:
用户A在服务提供者B上存储了一些资源。B支持oauth授权方式。A 是 B 上的注册用户,拥有用户名和密码。使用用户名和密码登录B可以查看自己的资源。假设有一个应用程序C,当用户A使用C时,他需要自己存储在B上的资源。有两种方法可以在 C 上实现资源以在 B 上显示自身。
这时C就可以使用B开启的oauth授权机制,当用户A想在B上展示资源时,C会跳转到B的验证页面,用户在B的页面输入用户名和密码。通过后,会询问用户是否为C应用开发相关资源。用户可以自定义C可以访问的资源,然后跳转回C应用。这样,您就不必担心用户名和密码,也不必同时存储多个资源。
您可以通过以下网站了解更多关于oauth的具体技术细节。
从上图中我们可以看出,整个流程分为消费者和提供者两部分。消费者是示例中的 C 应用程序,提供者是示例中的 B 服务提供者。
使用 OAuth 进行认证和授权的流程如下:
用户访问客户端的网站,想要操作存储在服务提供者中的用户资源。客户端向服务提供者请求一个临时令牌。服务提供者对客户端进行身份验证后,将授予一个临时令牌。客户端获取临时token后,将用户引导至服务提供者的授权页面,请求用户授权。在这个过程中,临时令牌和客户端的回调连接被发送给服务提供者。用户在服务提供商的网页上输入用户名和密码,然后授权客户端访问所请求的资源。授权成功后,服务商引导用户返回客户端的网页。客户端根据临时令牌从服务提供者处获取访问令牌。服务提供者根据临时令牌和用户授权授予客户端访问令牌。客户端使用获得的访问令牌来访问托管在服务提供商上的受保护资源。
新浪微博的誓言
借用一张新浪微博oauth验证流程图。
当我们在新浪微博开放平台上创建一个新的应用程序时,我们会给新的应用程序分配一个key和secret,即consumerKey和consumerSecret。通过这两件事,我们去request_token,然后将用户重定向到新浪微博平台的授权页面。授权后,我们会根据callback_url跳转到我们应用的某个地址。我们再次使用request_token来获取access_token,然后我们需要通过access token来访问需要验证的开放平台提供的接口。
当然,那些不需要验证就可以访问的接口,可以直接使用key进行访问。具体请参考开放平台提供的API文档。
腾讯微博和163微博的开放平台在原理和实现上也类似。
packagecom.sinaweibo2;
importoauth.signpost.OAuthConsumer;
importoauth.signpost.OAuthProvider;
monshttp.CommonsHttpOAuthConsumer;
monshttp.CommonsHttpOAuthProvider;
importoauth.signpost.exception.OAuthCommunicationException;
importoauth.signpost.exception.OAuthExpectationFailedException;
importoauth.signpost.exception.OAuthMessageSignerException;
importoauth.signpost.exception.OAuthNotAuthorizedException;
公共类OAuth {
privateOAuthConsumer mConsumer;
私有OAuthProvider mProvider;
publicstaticfinalString CALLBACK_URL="sinaweibo2://WeiboListActivity";
publicstaticfinalString CONSUMER_KEY="1849239616";
publicstaticfinalString CONSUMER_SECRET="b2137bf782bf6cae004b8a8394d5d5d6";
publicstaticfinalString REQUEST_TOKEN_URL = "";
publicstaticfinalString ACCESS_TOKEN_URL = "";
publicstaticfinalString AUTHORIZE_URL = "";
公共OAuth(){
}
publicString RetrieveAuthUrl() throwsOAuthMessageSignerException,
OAuthNotAuthorizedException、OAuthExpectationFailedException、
OAuthCommunicationException {
mConsumer =newCommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
mProvider =newCommonsHttpOAuthProvider(REQUEST_TOKEN_URL,
ACCESS_TOKEN_URL, AUTHORIZE_URL);
String authUrl= mProvider.retrieveRequestToken(mConsumer, CALLBACK_URL);
returnauthUrl;
}
publicvoidRetrieveAccessToken(字符串验证器)
throwsOAuthMessageSignerException、OAuthNotAuthorizedException、
OAuthExpectationFailedException, OAuthCommunicationException {
mProvider.setOAuth10a(true);
mProvider.retrieveAccessToken(mConsumer, 验证者);
OAuthUser.USER_ID=mProvider.getResponseParameters().getFirst("user_id");
OAuthUser.ACCESS_TOKEN = mConsumer.getToken();
OAuthUser.ACCESS_TOKEN_SECRET = mConsumer.getTokenSecret();
}
}
更多功能
接下来主要完善两个功能,一是分页浏览,二是发布微博。
未来可能支持图片发布等实用功能。
有UI美化,性能优化。
总结
在学习的过程中,我看了两本书,Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527). pdf,都是很不错的入门书,书我没有看完,但是看了大部分,边看边写demo。
同时,论坛是eoe天天的开发者门户。回答问题、解决问题、提问、发帖,总之就是锻炼自己,强迫自己锻炼基础和思考。
论坛上有很多中文的pdf教程,但是我发现大部分都是android开发者中心的Dev Guide和Resources中的内容的翻译。所以我觉得,如果英文不是很差,建议直接看上面两节,同时练习里面的例子。保证在两周内,你会取得很大的进步。
参考
Technorati 标签:android, 开放平台, oauth, 新浪微博 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(新浪微博开放平台做个实践,开发一个功能简单的android客户端)
介绍
最近不太忙,花点时间学习android app开发。经过两周的学习,我在学习的同时也写了很多demo例子,可以从基本控件和基本动画效果的demo合集中放出,不断更新下载。
从这周开始,我打算以新浪微博开放平台为实践,开发一个功能简单的安卓客户端,尽可能的完善功能。
今天的内容

上图是这个客户端的主界面。目前只获取前20条数据。您也可以单击刷新来刷新数据。功能比较简单。
操作系统是android2.2.
用到的技术点包括ListView、自定义ListAdapter、多线程相关Message、Handler、认证相关OAuth、异步加载用户图片等。
新浪微博的验证使用signpost的OAuth组件,不使用微博的SDK。

源代码下载:
关于 OAuth 身份验证
OAuth是目前比较流行的一种授权方案。twitter、facebook、google等大型开放平台均支持oauth认证方式,国内新浪微博、腾讯微博、163微博等开放平台也已支持。这种验证模式。
来自维基百科的引文
“oauth 是一种开放标准,允许用户允许第三方应用程序访问用户放置在 网站 上的私有资源,而无需将用户名和密码传递给第三方应用程序。oauth 允许用户提供一个令牌,而不是用户名和密码来访问他们存储在特定服务提供商处的数据。”
例如:
用户A在服务提供者B上存储了一些资源。B支持oauth授权方式。A 是 B 上的注册用户,拥有用户名和密码。使用用户名和密码登录B可以查看自己的资源。假设有一个应用程序C,当用户A使用C时,他需要自己存储在B上的资源。有两种方法可以在 C 上实现资源以在 B 上显示自身。
这时C就可以使用B开启的oauth授权机制,当用户A想在B上展示资源时,C会跳转到B的验证页面,用户在B的页面输入用户名和密码。通过后,会询问用户是否为C应用开发相关资源。用户可以自定义C可以访问的资源,然后跳转回C应用。这样,您就不必担心用户名和密码,也不必同时存储多个资源。
您可以通过以下网站了解更多关于oauth的具体技术细节。

从上图中我们可以看出,整个流程分为消费者和提供者两部分。消费者是示例中的 C 应用程序,提供者是示例中的 B 服务提供者。
使用 OAuth 进行认证和授权的流程如下:
用户访问客户端的网站,想要操作存储在服务提供者中的用户资源。客户端向服务提供者请求一个临时令牌。服务提供者对客户端进行身份验证后,将授予一个临时令牌。客户端获取临时token后,将用户引导至服务提供者的授权页面,请求用户授权。在这个过程中,临时令牌和客户端的回调连接被发送给服务提供者。用户在服务提供商的网页上输入用户名和密码,然后授权客户端访问所请求的资源。授权成功后,服务商引导用户返回客户端的网页。客户端根据临时令牌从服务提供者处获取访问令牌。服务提供者根据临时令牌和用户授权授予客户端访问令牌。客户端使用获得的访问令牌来访问托管在服务提供商上的受保护资源。
新浪微博的誓言

借用一张新浪微博oauth验证流程图。
当我们在新浪微博开放平台上创建一个新的应用程序时,我们会给新的应用程序分配一个key和secret,即consumerKey和consumerSecret。通过这两件事,我们去request_token,然后将用户重定向到新浪微博平台的授权页面。授权后,我们会根据callback_url跳转到我们应用的某个地址。我们再次使用request_token来获取access_token,然后我们需要通过access token来访问需要验证的开放平台提供的接口。
当然,那些不需要验证就可以访问的接口,可以直接使用key进行访问。具体请参考开放平台提供的API文档。
腾讯微博和163微博的开放平台在原理和实现上也类似。
packagecom.sinaweibo2;
importoauth.signpost.OAuthConsumer;
importoauth.signpost.OAuthProvider;
monshttp.CommonsHttpOAuthConsumer;
monshttp.CommonsHttpOAuthProvider;
importoauth.signpost.exception.OAuthCommunicationException;
importoauth.signpost.exception.OAuthExpectationFailedException;
importoauth.signpost.exception.OAuthMessageSignerException;
importoauth.signpost.exception.OAuthNotAuthorizedException;
公共类OAuth {
privateOAuthConsumer mConsumer;
私有OAuthProvider mProvider;
publicstaticfinalString CALLBACK_URL="sinaweibo2://WeiboListActivity";
publicstaticfinalString CONSUMER_KEY="1849239616";
publicstaticfinalString CONSUMER_SECRET="b2137bf782bf6cae004b8a8394d5d5d6";
publicstaticfinalString REQUEST_TOKEN_URL = "";
publicstaticfinalString ACCESS_TOKEN_URL = "";
publicstaticfinalString AUTHORIZE_URL = "";
公共OAuth(){
}
publicString RetrieveAuthUrl() throwsOAuthMessageSignerException,
OAuthNotAuthorizedException、OAuthExpectationFailedException、
OAuthCommunicationException {
mConsumer =newCommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
mProvider =newCommonsHttpOAuthProvider(REQUEST_TOKEN_URL,
ACCESS_TOKEN_URL, AUTHORIZE_URL);
String authUrl= mProvider.retrieveRequestToken(mConsumer, CALLBACK_URL);
returnauthUrl;
}
publicvoidRetrieveAccessToken(字符串验证器)
throwsOAuthMessageSignerException、OAuthNotAuthorizedException、
OAuthExpectationFailedException, OAuthCommunicationException {
mProvider.setOAuth10a(true);
mProvider.retrieveAccessToken(mConsumer, 验证者);
OAuthUser.USER_ID=mProvider.getResponseParameters().getFirst("user_id");
OAuthUser.ACCESS_TOKEN = mConsumer.getToken();
OAuthUser.ACCESS_TOKEN_SECRET = mConsumer.getTokenSecret();
}
}
更多功能
接下来主要完善两个功能,一是分页浏览,二是发布微博。
未来可能支持图片发布等实用功能。
有UI美化,性能优化。
总结
在学习的过程中,我看了两本书,Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527). pdf,都是很不错的入门书,书我没有看完,但是看了大部分,边看边写demo。
同时,论坛是eoe天天的开发者门户。回答问题、解决问题、提问、发帖,总之就是锻炼自己,强迫自己锻炼基础和思考。
论坛上有很多中文的pdf教程,但是我发现大部分都是android开发者中心的Dev Guide和Resources中的内容的翻译。所以我觉得,如果英文不是很差,建议直接看上面两节,同时练习里面的例子。保证在两周内,你会取得很大的进步。
参考
Technorati 标签:android, 开放平台, oauth, 新浪微博
使用新浪微博开放平台api同步微博内容至自己网站(人人网使用微博账号登录功能直接使用新浪官方登录组件)
网站优化 • 优采云 发表了文章 • 0 个评论 • 67 次浏览 • 2022-03-31 10:06
如果你想在你的网站中嵌入“微博登录”功能,直接使用新浪官方登录组件非常方便。官方教程
首先是完善开发者信息,提交网站认证(获取appkey/appsecret)等步骤,设计登录后的按钮和显示样式,最后将生成的代码复制到我们的网页文件中。
代码显示如下:
测试页面
WB2.anyWhere(function(W){
W.widget.connectButton({
id: "wb_connect_btn",
type:"3,2",
callback : {
login:function(o){ //登录后的回调函数
//alert("login: "+o.screen_name);
},
logout:function(){ //退出后的回调函数
//alert("logout");
}
}
});
});
效果如下:
(用户登录前)
(点击弹出授权窗口)
(授权成功,返回用户信息)
测试地址
不知道为什么弹窗总是被浏览器挡住,看看怎么解决
人人网和腾讯的网站连接比较麻烦,其中人人网需要配置js跨域文件,QQ登录返回的回调数据中收录access_token,需要在js中实现用户信息自己编码。操作。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(人人网使用微博账号登录功能直接使用新浪官方登录组件)
如果你想在你的网站中嵌入“微博登录”功能,直接使用新浪官方登录组件非常方便。官方教程
首先是完善开发者信息,提交网站认证(获取appkey/appsecret)等步骤,设计登录后的按钮和显示样式,最后将生成的代码复制到我们的网页文件中。
代码显示如下:
测试页面
WB2.anyWhere(function(W){
W.widget.connectButton({
id: "wb_connect_btn",
type:"3,2",
callback : {
login:function(o){ //登录后的回调函数
//alert("login: "+o.screen_name);
},
logout:function(){ //退出后的回调函数
//alert("logout");
}
}
});
});
效果如下:

(用户登录前)

(点击弹出授权窗口)

(授权成功,返回用户信息)
测试地址
不知道为什么弹窗总是被浏览器挡住,看看怎么解决
人人网和腾讯的网站连接比较麻烦,其中人人网需要配置js跨域文件,QQ登录返回的回调数据中收录access_token,需要在js中实现用户信息自己编码。操作。
使用新浪微博开放平台api同步微博内容至自己网站(用MBProgressHUD强制给界面设置一个“遮罩”(组图) )
网站优化 • 优采云 发表了文章 • 0 个评论 • 60 次浏览 • 2022-03-30 18:02
)
特征
在开发快易博的时候,有个叫“分享心情”的功能【见下图】。它的主要功能是:用户可以一次发布一条微博(在人人网称为新事物)到用户选择的所有绑定平台(其实就是俗称的微博同步)。
进入后:
这个功能实现起来并不难。说白了就是依次调用各个开放平台的“发布”相关API就够了。但是,为用户提供更好的“用户体验”涉及到几个要求,所以不得不使用多线程。要求如下:
(1)在图2对应的功能界面上,发布完成后用户应该可以立即关闭;
(2)在各个平台的独立发布界面中,发布完成后自动关闭发布界面,并显示打开发布界面前的界面。
注意:分享心情界面实际上实现了一个多功能的发布界面,可以同步推送,也可以选择你要推送的平台。为了给用户提供方便,点击各个平台(如新浪微博)后,都有单独的发布界面发布到平台,提供更多功能,如“@、##”等,见下图。
原创处理
针对以上需求(1),我原来的做法是使用MBProgressHUD在当前界面强制加一个“遮罩”,让用户点击右上角的发帖按钮后,后退按钮不可点击。目的是停留在当前界面等待各种开放平台提供的“发布成功”、“发布失败”等回调协议的执行,并在回调协议中通过提示信息提示用户是否成功在状态栏中。
如果返回按钮是可点击的,用户可能会选择发布完成后立即返回,那么当前的 UIViewController 可能已经被释放,回调时应用会崩溃。当然,如果使用MBProgressHUD持有主界面,用户只能等待,而回调协议执行的时机其实取决于很多不确定因素(比如当前的网速,如果有图的话,也要看图片的大小),以及各个开放平台对API调用的响应速度等),可能很快,也可能要等几十秒。一旦你测试了用户的耐心,你就是在为自己埋下一颗定时炸弹。
对于需求(2),关闭速度比需求(1))要快。我需要让用户在发布完成后立即关闭发布界面。所以当前的UIViewController等不及了对于回调协议的调用,根本无法释放,无法实现状态栏提示,当然折衷的方法是使用MBProgressHUD显示“请稍候……”,强制界面无法响应用户,并选择在回调完成时关闭。
从上面的分析可以看出当前的处理方式,希望回调协议与当前发布界面的UIViewController对象的生命周期无关。那么这些“发布”操作只能在主线程(UI线程)上执行,也实现了发布操作与发布函数接口的解耦。
设计和代码实现
在 iOS 中有几种实现多线程的方法。这里使用了 NSOperation 和 NSOperationQueue。
UML图:
大致代码如下:
发布操作:
#import
#import "MTStatusBarOverlay.h"
@interface PublishOperation : NSOperation
<
MTStatusBarOverlayDelegate
>
@property (nonatomic,copy) NSString* txt;
@property (nonatomic,copy) NSString *publishImgPath;
@property (nonatomic,assign) BOOL completed;
@property (nonatomic,assign) BOOL canceledAfterError;
@property (nonatomic,retain) MTStatusBarOverlay *overlay;
- (void)clearPublishedImage;
- (id)initWithOperateParams:(NSString*)content;
@end
#import "PublishOperation.h"
@implementation PublishOperation
@synthesize completed;
@synthesize canceledAfterError;
@synthesize txt=_txt;
@synthesize overlay=_overlay;
@synthesize publishImgPath=_publishImgPath;
- (void)dealloc{
[_txt release],_txt=nil;
[_overlay release],_overlay=nil;
[_publishImgPath release],_publishImgPath=nil;
[super dealloc];
}
- (id)init{
if (self=[super init]) {
completed=NO;
canceledAfterError=NO;
[self initMTStatusBarOverlay];
}
return self;
}
- (id)initWithOperateParams:(NSString*)content{
if (self=[self init]) {
self.txt=content;
}
return self;
}
/*
*实例化工具栏提示组件
*/
-(void)initMTStatusBarOverlay{
_overlay = [MTStatusBarOverlay sharedInstance];
_overlay.animation = MTStatusBarOverlayAnimationFallDown;
_overlay.detailViewMode = MTDetailViewModeHistory;
_overlay.delegate=self;
}
- (void)main{
//操作既没有完成也没有因为发生错误而取消,则hold住当前run loop
//防止返回主线程使得代理方法无法执行
while (!(self.completed||self.canceledAfterError)) {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
beforeDate:[NSDate distantFuture]];
DebugLog(@"running!");
}
}
#pragma mark - other methods -
- (void)clearPublishedImage{
//清除緩存圖片
if (fileExistsAtPath(self.publishImgPath)) {
removerAtItem(self.publishImgPath);
}
}
@end
新浪微博发布运营
#import "PublishOperation.h"
#import "WBEngine.h"
@interface SinaWeiboPublishOperation : PublishOperation
<
WBEngineDelegate
>
@end
#import "SinaWeiboPublishOperation.h"
@interface SinaWeiboPublishOperation()
@property (nonatomic,retain) WBEngine *engine;
@end
@implementation SinaWeiboPublishOperation
@synthesize engine=_engine;
- (void)dealloc{
[_engine setDelegate:nil];
[_engine release],_engine=nil;
[super dealloc];
}
/*
*business logic
*/
- (void)main{
self.publishImgPath=PUBLISH_IMAGEPATH_SINAWEIBO;
_engine = [[WBEngine alloc]initWithAppKey:kWBSDKDemoAppKey
appSecret:kWBSDKDemoAppSecret];
_engine.delegate=self;
[self.engine sendWeiBoWithText:self.txt
image:[UIImage imageWithContentsOfFile:
PUBLISH_IMAGEPATH_SINAWEIBO]];
[self.overlay postImmediateMessage:@"新浪微博发表中..." animated:YES];
[super main];
}
#pragma mark - WBEngineDelegate Methods -
- (void)engine:(WBEngine *)engine requestDidSucceedWithResult:(id)result{
[self clearPublishedImage];
[GlobalInstance showOverlayMsg:@"新浪微博发表成功!"
andDuration:2.0
andOverlay:self.overlay];
self.completed=YES;
[NSThread sleepForTimeInterval:5];
}
- (void)engine:(WBEngine *)engine requestDidFailWithError:(NSError *)error{
[self clearPublishedImage];
[GlobalInstance showOverlayErrorMsg:@"新浪微博发表失败!"
andDuration:2.0
andOverlay:self.overlay];
self.canceledAfterError=YES;
[NSThread sleepForTimeInterval:5];
}
人人发布操作
#import "PublishOperation.h"
@interface RenRenPublishOperation : PublishOperation
<
RenrenDelegate
>
@end
#import "RenRenPublishOperation.h"
@implementation RenRenPublishOperation
/*
*business logic
*/
- (void)main{
self.publishImgPath=PUBLISH_IMAGEPATH_RENREN;
BOOL hasImage=[[NSFileManager defaultManager]fileExistsAtPath:PUBLISH_IMAGEPATH_RENREN];
if (hasImage) {
ROPublishPhotoRequestParam *photoParams=[[[ROPublishPhotoRequestParam alloc]init]autorelease];
photoParams.imageFile=[UIImage imageWithContentsOfFile:PUBLISH_IMAGEPATH_RENREN];
photoParams.caption=self.txt;
[[Renren sharedRenren] publishPhoto:photoParams andDelegate:self];
[self.overlay postImmediateMessage:@"人人图片上传中..." animated:YES];
}else {
NSMutableDictionary *params=[NSMutableDictionary dictionaryWithCapacity:10];
[params setObject:@"status.set" forKey:@"method"];
[params setObject:self.txt
forKey:@"status"];
[[Renren sharedRenren]requestWithParams:params andDelegate:self];
[self.overlay postImmediateMessage:@"人人状态发表中..." animated:YES];
}
[super main];
}
#pragma mark - RenrenDelegate (ren ren) -
-(void)renren:(Renren *)renren requestDidReturnResponse:(ROResponse *)response{
[self clearPublishedImage];
[GlobalInstance showOverlayMsg:@"人人新鲜事发表成功!"
andDuration:2.0
andOverlay:self.overlay];
self.completed=YES;
[NSThread sleepForTimeInterval:5];
}
腾讯微博发布运营
#import "PublishOperation.h"
#import "TencentWeiboDelegate.h"
@interface TencentWeiboPublishOperation : PublishOperation
<
TencentWeiboDelegate
>
@end
#import "TencentWeiboPublishOperation.h"
#import "TencentWeiboManager.h"
#import "OpenApi.h"
@implementation TencentWeiboPublishOperation
/*
*business logic
*/
- (void)main{
[self.overlay postImmediateMessage:@"腾讯微博发表中..." animated:YES];
self.publishImgPath=PUBLISH_IMAGEPATH_TENCENTWEIBO;
BOOL hasImage=[[NSFileManager defaultManager]fileExistsAtPath:PUBLISH_IMAGEPATH_TENCENTWEIBO];
OpenApi *myApi=[TencentWeiboManager getOpenApi];
myApi.delegate=self;
if (!hasImage) {
[myApi publishWeibo:self.txt
jing:@""
wei:@""
format:@"json"
clientip:@"127.0.0.1"
syncflag:@"0"];
}else{
[myApi publishWeiboWithImageAndContent:self.txt
jing:@"" wei:@""
format:@"json"
clientip:@"127.0.0.1"
syncflag:@"0"];
}
}
#pragma mark - tencent weibo delegate -
- (void)tencentWeiboPublishedSuccessfully{
[self clearPublishedImage];
[GlobalInstance showOverlayMsg:@"腾讯微博发表成功!"
andDuration:2.0
andOverlay:self.overlay];
[NSThread sleepForTimeInterval:5];
}
- (void)tencentWeiboRequestFailWithError{
[self clearPublishedImage];
[GlobalInstance showOverlayErrorMsg:@"腾讯微博发表失败!"
andDuration:2.0
andOverlay:self.overlay];
[NSThread sleepForTimeInterval:5];
}
@end
注意: NSOperation 只需要在非并发执行模式下重新实现它的 main 方法。
PublishOperation的main方法中代码的主要目的是保存当前的RunLoop(一般来说就是阻塞当前的执行上下文,直到回调协议执行完毕)。可以看出还是存在回调协议无法执行的问题。为什么会发生这种情况,为什么要保留执行上下文?因为各个平台的API通常都是异步发送请求的(腾讯微博除外),等到有响应后再执行实现的协议。所谓异步,其实是操作系统在后台用另一个线程来处理的。NSOperation的执行方式是在执行完main方法中实现的逻辑后退出,返回到主线程。所以通常情况下,这里的回调协议仍然没有 t 获得执行的机会(实际上获得了机会,但是当前的NSOperation对象已经被释放,导致内存访问错误)。所以这里用了一个while循环来保存当前的主runloop,直到各个平台的异步回调协议完成,然后设置completed或者cancelAfterError为YES退出while循环。请注意,这两个属性是异步设置的,即由另一个线程设置。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。所以这里用了一个while循环来保存当前的主runloop,直到各个平台的异步回调协议完成,然后设置completed或者cancelAfterError为YES退出while循环。请注意,这两个属性是异步设置的,即由另一个线程设置。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。所以这里用了一个while循环来保存当前的主runloop,直到各个平台的异步回调协议完成,然后设置completed或者cancelAfterError为YES退出while循环。请注意,这两个属性是异步设置的,即由另一个线程设置。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。
顺便吐槽一下腾讯微博开放平台。在他们开放的框架中,发出的请求都是同步获取的,并且没有定义任何回调协议,这也让我很困扰。所以腾讯微博运营中的实现会与新浪和人人不同。因为调用是同步的,所以在腾讯微博PublishOperation结束时直接调用[super main]是没有用的(因为会在回调协议之后执行,所以这里不需要调用),这里调用的是线程的Sleep方法, 让线程休眠 5 秒,也就是将当前的 NSOperation 上下文延迟 5 秒。延迟是因为在状态栏中显示提示信息需要2秒。如果没有延迟,那么完成后设置为YES,NSOperation会被执行并退出,
/*
*状态栏显示完成提示信息
*/
-(void)showOverlayMsg:(NSString*)msg andDuration:(NSTimeInterval)duration andOverlay:(MTStatusBarOverlay*)overlay{
[overlay postImmediateFinishMessage:msg
duration:duration animated:YES];
}
你在应用的AppDelegate中定义一个NSOperationQueue来执行NSOperation,可以完成发布操作与发布功能接口的Controller的解耦。这样,Controller 可以在发布完成后直接关闭和发布,并且由于对功能的封装,成为一个独立的、可复用的整体。在“Share Mood”功能界面中,如果同步推送多个平台,只需要将各个平台的“PublishOperation”扔到NSOperationQueue中,其他的事情就不用操心了,直接关闭或者返回即可。
新浪微博单独发布接口示例代码:
- (void)publishBtn_handle:(id)sender{
NSString *txt=self.publishTxtView.text;
PublishOperation *publishOperation=[[[SinaWeiboPublishOperation alloc]initWithOperateParams:txt]autorelease];
[((FastEasyBlogAppDelegate*)appDelegateObj).operationQueue addOperation:publishOperation];
[self dismissModalViewControllerAnimated:YES];
} 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(用MBProgressHUD强制给界面设置一个“遮罩”(组图)
)
特征
在开发快易博的时候,有个叫“分享心情”的功能【见下图】。它的主要功能是:用户可以一次发布一条微博(在人人网称为新事物)到用户选择的所有绑定平台(其实就是俗称的微博同步)。
进入后:
这个功能实现起来并不难。说白了就是依次调用各个开放平台的“发布”相关API就够了。但是,为用户提供更好的“用户体验”涉及到几个要求,所以不得不使用多线程。要求如下:
(1)在图2对应的功能界面上,发布完成后用户应该可以立即关闭;
(2)在各个平台的独立发布界面中,发布完成后自动关闭发布界面,并显示打开发布界面前的界面。
注意:分享心情界面实际上实现了一个多功能的发布界面,可以同步推送,也可以选择你要推送的平台。为了给用户提供方便,点击各个平台(如新浪微博)后,都有单独的发布界面发布到平台,提供更多功能,如“@、##”等,见下图。
原创处理
针对以上需求(1),我原来的做法是使用MBProgressHUD在当前界面强制加一个“遮罩”,让用户点击右上角的发帖按钮后,后退按钮不可点击。目的是停留在当前界面等待各种开放平台提供的“发布成功”、“发布失败”等回调协议的执行,并在回调协议中通过提示信息提示用户是否成功在状态栏中。
如果返回按钮是可点击的,用户可能会选择发布完成后立即返回,那么当前的 UIViewController 可能已经被释放,回调时应用会崩溃。当然,如果使用MBProgressHUD持有主界面,用户只能等待,而回调协议执行的时机其实取决于很多不确定因素(比如当前的网速,如果有图的话,也要看图片的大小),以及各个开放平台对API调用的响应速度等),可能很快,也可能要等几十秒。一旦你测试了用户的耐心,你就是在为自己埋下一颗定时炸弹。
对于需求(2),关闭速度比需求(1))要快。我需要让用户在发布完成后立即关闭发布界面。所以当前的UIViewController等不及了对于回调协议的调用,根本无法释放,无法实现状态栏提示,当然折衷的方法是使用MBProgressHUD显示“请稍候……”,强制界面无法响应用户,并选择在回调完成时关闭。
从上面的分析可以看出当前的处理方式,希望回调协议与当前发布界面的UIViewController对象的生命周期无关。那么这些“发布”操作只能在主线程(UI线程)上执行,也实现了发布操作与发布函数接口的解耦。
设计和代码实现
在 iOS 中有几种实现多线程的方法。这里使用了 NSOperation 和 NSOperationQueue。
UML图:

大致代码如下:
发布操作:
#import
#import "MTStatusBarOverlay.h"
@interface PublishOperation : NSOperation
<
MTStatusBarOverlayDelegate
>
@property (nonatomic,copy) NSString* txt;
@property (nonatomic,copy) NSString *publishImgPath;
@property (nonatomic,assign) BOOL completed;
@property (nonatomic,assign) BOOL canceledAfterError;
@property (nonatomic,retain) MTStatusBarOverlay *overlay;
- (void)clearPublishedImage;
- (id)initWithOperateParams:(NSString*)content;
@end
#import "PublishOperation.h"
@implementation PublishOperation
@synthesize completed;
@synthesize canceledAfterError;
@synthesize txt=_txt;
@synthesize overlay=_overlay;
@synthesize publishImgPath=_publishImgPath;
- (void)dealloc{
[_txt release],_txt=nil;
[_overlay release],_overlay=nil;
[_publishImgPath release],_publishImgPath=nil;
[super dealloc];
}
- (id)init{
if (self=[super init]) {
completed=NO;
canceledAfterError=NO;
[self initMTStatusBarOverlay];
}
return self;
}
- (id)initWithOperateParams:(NSString*)content{
if (self=[self init]) {
self.txt=content;
}
return self;
}
/*
*实例化工具栏提示组件
*/
-(void)initMTStatusBarOverlay{
_overlay = [MTStatusBarOverlay sharedInstance];
_overlay.animation = MTStatusBarOverlayAnimationFallDown;
_overlay.detailViewMode = MTDetailViewModeHistory;
_overlay.delegate=self;
}
- (void)main{
//操作既没有完成也没有因为发生错误而取消,则hold住当前run loop
//防止返回主线程使得代理方法无法执行
while (!(self.completed||self.canceledAfterError)) {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
beforeDate:[NSDate distantFuture]];
DebugLog(@"running!");
}
}
#pragma mark - other methods -
- (void)clearPublishedImage{
//清除緩存圖片
if (fileExistsAtPath(self.publishImgPath)) {
removerAtItem(self.publishImgPath);
}
}
@end
新浪微博发布运营
#import "PublishOperation.h"
#import "WBEngine.h"
@interface SinaWeiboPublishOperation : PublishOperation
<
WBEngineDelegate
>
@end
#import "SinaWeiboPublishOperation.h"
@interface SinaWeiboPublishOperation()
@property (nonatomic,retain) WBEngine *engine;
@end
@implementation SinaWeiboPublishOperation
@synthesize engine=_engine;
- (void)dealloc{
[_engine setDelegate:nil];
[_engine release],_engine=nil;
[super dealloc];
}
/*
*business logic
*/
- (void)main{
self.publishImgPath=PUBLISH_IMAGEPATH_SINAWEIBO;
_engine = [[WBEngine alloc]initWithAppKey:kWBSDKDemoAppKey
appSecret:kWBSDKDemoAppSecret];
_engine.delegate=self;
[self.engine sendWeiBoWithText:self.txt
image:[UIImage imageWithContentsOfFile:
PUBLISH_IMAGEPATH_SINAWEIBO]];
[self.overlay postImmediateMessage:@"新浪微博发表中..." animated:YES];
[super main];
}
#pragma mark - WBEngineDelegate Methods -
- (void)engine:(WBEngine *)engine requestDidSucceedWithResult:(id)result{
[self clearPublishedImage];
[GlobalInstance showOverlayMsg:@"新浪微博发表成功!"
andDuration:2.0
andOverlay:self.overlay];
self.completed=YES;
[NSThread sleepForTimeInterval:5];
}
- (void)engine:(WBEngine *)engine requestDidFailWithError:(NSError *)error{
[self clearPublishedImage];
[GlobalInstance showOverlayErrorMsg:@"新浪微博发表失败!"
andDuration:2.0
andOverlay:self.overlay];
self.canceledAfterError=YES;
[NSThread sleepForTimeInterval:5];
}
人人发布操作
#import "PublishOperation.h"
@interface RenRenPublishOperation : PublishOperation
<
RenrenDelegate
>
@end
#import "RenRenPublishOperation.h"
@implementation RenRenPublishOperation
/*
*business logic
*/
- (void)main{
self.publishImgPath=PUBLISH_IMAGEPATH_RENREN;
BOOL hasImage=[[NSFileManager defaultManager]fileExistsAtPath:PUBLISH_IMAGEPATH_RENREN];
if (hasImage) {
ROPublishPhotoRequestParam *photoParams=[[[ROPublishPhotoRequestParam alloc]init]autorelease];
photoParams.imageFile=[UIImage imageWithContentsOfFile:PUBLISH_IMAGEPATH_RENREN];
photoParams.caption=self.txt;
[[Renren sharedRenren] publishPhoto:photoParams andDelegate:self];
[self.overlay postImmediateMessage:@"人人图片上传中..." animated:YES];
}else {
NSMutableDictionary *params=[NSMutableDictionary dictionaryWithCapacity:10];
[params setObject:@"status.set" forKey:@"method"];
[params setObject:self.txt
forKey:@"status"];
[[Renren sharedRenren]requestWithParams:params andDelegate:self];
[self.overlay postImmediateMessage:@"人人状态发表中..." animated:YES];
}
[super main];
}
#pragma mark - RenrenDelegate (ren ren) -
-(void)renren:(Renren *)renren requestDidReturnResponse:(ROResponse *)response{
[self clearPublishedImage];
[GlobalInstance showOverlayMsg:@"人人新鲜事发表成功!"
andDuration:2.0
andOverlay:self.overlay];
self.completed=YES;
[NSThread sleepForTimeInterval:5];
}
腾讯微博发布运营
#import "PublishOperation.h"
#import "TencentWeiboDelegate.h"
@interface TencentWeiboPublishOperation : PublishOperation
<
TencentWeiboDelegate
>
@end
#import "TencentWeiboPublishOperation.h"
#import "TencentWeiboManager.h"
#import "OpenApi.h"
@implementation TencentWeiboPublishOperation
/*
*business logic
*/
- (void)main{
[self.overlay postImmediateMessage:@"腾讯微博发表中..." animated:YES];
self.publishImgPath=PUBLISH_IMAGEPATH_TENCENTWEIBO;
BOOL hasImage=[[NSFileManager defaultManager]fileExistsAtPath:PUBLISH_IMAGEPATH_TENCENTWEIBO];
OpenApi *myApi=[TencentWeiboManager getOpenApi];
myApi.delegate=self;
if (!hasImage) {
[myApi publishWeibo:self.txt
jing:@""
wei:@""
format:@"json"
clientip:@"127.0.0.1"
syncflag:@"0"];
}else{
[myApi publishWeiboWithImageAndContent:self.txt
jing:@"" wei:@""
format:@"json"
clientip:@"127.0.0.1"
syncflag:@"0"];
}
}
#pragma mark - tencent weibo delegate -
- (void)tencentWeiboPublishedSuccessfully{
[self clearPublishedImage];
[GlobalInstance showOverlayMsg:@"腾讯微博发表成功!"
andDuration:2.0
andOverlay:self.overlay];
[NSThread sleepForTimeInterval:5];
}
- (void)tencentWeiboRequestFailWithError{
[self clearPublishedImage];
[GlobalInstance showOverlayErrorMsg:@"腾讯微博发表失败!"
andDuration:2.0
andOverlay:self.overlay];
[NSThread sleepForTimeInterval:5];
}
@end
注意: NSOperation 只需要在非并发执行模式下重新实现它的 main 方法。
PublishOperation的main方法中代码的主要目的是保存当前的RunLoop(一般来说就是阻塞当前的执行上下文,直到回调协议执行完毕)。可以看出还是存在回调协议无法执行的问题。为什么会发生这种情况,为什么要保留执行上下文?因为各个平台的API通常都是异步发送请求的(腾讯微博除外),等到有响应后再执行实现的协议。所谓异步,其实是操作系统在后台用另一个线程来处理的。NSOperation的执行方式是在执行完main方法中实现的逻辑后退出,返回到主线程。所以通常情况下,这里的回调协议仍然没有 t 获得执行的机会(实际上获得了机会,但是当前的NSOperation对象已经被释放,导致内存访问错误)。所以这里用了一个while循环来保存当前的主runloop,直到各个平台的异步回调协议完成,然后设置completed或者cancelAfterError为YES退出while循环。请注意,这两个属性是异步设置的,即由另一个线程设置。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。所以这里用了一个while循环来保存当前的主runloop,直到各个平台的异步回调协议完成,然后设置completed或者cancelAfterError为YES退出while循环。请注意,这两个属性是异步设置的,即由另一个线程设置。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。所以这里用了一个while循环来保存当前的主runloop,直到各个平台的异步回调协议完成,然后设置completed或者cancelAfterError为YES退出while循环。请注意,这两个属性是异步设置的,即由另一个线程设置。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。
顺便吐槽一下腾讯微博开放平台。在他们开放的框架中,发出的请求都是同步获取的,并且没有定义任何回调协议,这也让我很困扰。所以腾讯微博运营中的实现会与新浪和人人不同。因为调用是同步的,所以在腾讯微博PublishOperation结束时直接调用[super main]是没有用的(因为会在回调协议之后执行,所以这里不需要调用),这里调用的是线程的Sleep方法, 让线程休眠 5 秒,也就是将当前的 NSOperation 上下文延迟 5 秒。延迟是因为在状态栏中显示提示信息需要2秒。如果没有延迟,那么完成后设置为YES,NSOperation会被执行并退出,
/*
*状态栏显示完成提示信息
*/
-(void)showOverlayMsg:(NSString*)msg andDuration:(NSTimeInterval)duration andOverlay:(MTStatusBarOverlay*)overlay{
[overlay postImmediateFinishMessage:msg
duration:duration animated:YES];
}
你在应用的AppDelegate中定义一个NSOperationQueue来执行NSOperation,可以完成发布操作与发布功能接口的Controller的解耦。这样,Controller 可以在发布完成后直接关闭和发布,并且由于对功能的封装,成为一个独立的、可复用的整体。在“Share Mood”功能界面中,如果同步推送多个平台,只需要将各个平台的“PublishOperation”扔到NSOperationQueue中,其他的事情就不用操心了,直接关闭或者返回即可。
新浪微博单独发布接口示例代码:
- (void)publishBtn_handle:(id)sender{
NSString *txt=self.publishTxtView.text;
PublishOperation *publishOperation=[[[SinaWeiboPublishOperation alloc]initWithOperateParams:txt]autorelease];
[((FastEasyBlogAppDelegate*)appDelegateObj).operationQueue addOperation:publishOperation];
[self dismissModalViewControllerAnimated:YES];
}
使用新浪微博开放平台api同步微博内容至自己网站(使用新浪微博开放平台api同步微博内容至自己网站就行)
网站优化 • 优采云 发表了文章 • 0 个评论 • 70 次浏览 • 2022-03-30 04:04
使用新浪微博开放平台api同步微博内容至自己网站就可以将内容发布至新浪微博
先把内容上传到新浪微博再绑定自己的微博账号就行,同步的。
一个帐号同步5万条微博内容。直接调用新浪微博开放平台的接口即可。
可以用weibodatepir,
用新浪的api,虽然现在太老旧了,但以后估计会跟时光机一样。
可以用新浪微博开放平台的接口
你先确定自己需要同步的量级,一般同步5万条左右的话,比较可行的方法是走第三方付费产品的接口。我知道的有新浪微博+twitter+adsense也可以试试,不一定最好的,但应该可以最便宜地实现。
新浪api_开放平台在新浪的开放平台里可以尝试
如果从新浪的后台注册一个账号,应该是可以申请同步数据的,但是我没有使用过不是很清楚。
你可以试试腾讯的,在安卓手机上qq浏览器或者电脑上qq浏览器都可以的。
你可以把内容发布到腾讯微博然后设置新浪微博的高级用户发送,
跟老板说明你那里不能同步,然后让你老板替你同步,
今天把我的微博上传至腾讯微博,再下载腾讯微博app(/)点击微博内容,新浪微博在app后台就给你推送了。说简单也简单,说复杂也复杂。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(使用新浪微博开放平台api同步微博内容至自己网站就行)
使用新浪微博开放平台api同步微博内容至自己网站就可以将内容发布至新浪微博
先把内容上传到新浪微博再绑定自己的微博账号就行,同步的。
一个帐号同步5万条微博内容。直接调用新浪微博开放平台的接口即可。
可以用weibodatepir,
用新浪的api,虽然现在太老旧了,但以后估计会跟时光机一样。
可以用新浪微博开放平台的接口
你先确定自己需要同步的量级,一般同步5万条左右的话,比较可行的方法是走第三方付费产品的接口。我知道的有新浪微博+twitter+adsense也可以试试,不一定最好的,但应该可以最便宜地实现。
新浪api_开放平台在新浪的开放平台里可以尝试
如果从新浪的后台注册一个账号,应该是可以申请同步数据的,但是我没有使用过不是很清楚。
你可以试试腾讯的,在安卓手机上qq浏览器或者电脑上qq浏览器都可以的。
你可以把内容发布到腾讯微博然后设置新浪微博的高级用户发送,
跟老板说明你那里不能同步,然后让你老板替你同步,
今天把我的微博上传至腾讯微博,再下载腾讯微博app(/)点击微博内容,新浪微博在app后台就给你推送了。说简单也简单,说复杂也复杂。
使用新浪微博开放平台api同步微博内容至自己网站(即拍即传无需等待帮您以最快的速度分享身边的新鲜事2)
网站优化 • 优采云 发表了文章 • 0 个评论 • 52 次浏览 • 2022-03-28 09:08
拍摄、上传、分享,一气呵成。无需等待即可拍摄和上传,帮助您第一时间分享您身边的最新消息
2.绑定并同步新浪微博和人人网
Vlook可以将视频内容实时同步到新浪微博、人人网等开放平台,并在平台上分享给你的朋友和粉丝
3.多界面显示
Vlook移动端提供宫格、大图、微博等三种视图模式,您可以自由切换,自定义设置。
4.每个视频限时五分钟
强大的视频编辑功能,精准捕捉视频精彩部分,保证您的分享质量
5.多种添加好友方式
提供好友搜索、手机通讯录搜索、短信和邮件推荐,分享视频、邀请好友更方便
6.强大的隐私保护
视频可公开播放、好友可见、自己可见、特定候选人可见,视频分享更人性化
新版本 1.8
修改方块、添加新类别和特色推荐
修改未登录页面访问者内容的推荐
添加了版本和帮助信息
修改部分bug,优化功能
调整后的应用程序图标
适用机型:Apple iPhone XS、Apple iPhone XS Max、Apple iPhone X、Apple iPhone XR、Apple iPhone 8 Plus、Apple iPhone 8、Apple iPhone 7 Plus、Apple iPhone 7、Apple iPhone SE、Apple iPhone 6s Plus、Apple iPhone 6s , Apple iPhone 5s 开放版, Apple iPhone 6 Mobile 4G, Apple iPhone 6, Apple iPhone 5s Mobile 4G, Apple iPhone 6 Plus, Apple iPhone 5c, Apple iPhone 5, Apple iPhone 4S, Apple iPhone 4 (CDMA 版),. .. 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(即拍即传无需等待帮您以最快的速度分享身边的新鲜事2)
拍摄、上传、分享,一气呵成。无需等待即可拍摄和上传,帮助您第一时间分享您身边的最新消息
2.绑定并同步新浪微博和人人网
Vlook可以将视频内容实时同步到新浪微博、人人网等开放平台,并在平台上分享给你的朋友和粉丝
3.多界面显示
Vlook移动端提供宫格、大图、微博等三种视图模式,您可以自由切换,自定义设置。
4.每个视频限时五分钟
强大的视频编辑功能,精准捕捉视频精彩部分,保证您的分享质量
5.多种添加好友方式
提供好友搜索、手机通讯录搜索、短信和邮件推荐,分享视频、邀请好友更方便
6.强大的隐私保护
视频可公开播放、好友可见、自己可见、特定候选人可见,视频分享更人性化
新版本 1.8
修改方块、添加新类别和特色推荐
修改未登录页面访问者内容的推荐
添加了版本和帮助信息
修改部分bug,优化功能
调整后的应用程序图标
适用机型:Apple iPhone XS、Apple iPhone XS Max、Apple iPhone X、Apple iPhone XR、Apple iPhone 8 Plus、Apple iPhone 8、Apple iPhone 7 Plus、Apple iPhone 7、Apple iPhone SE、Apple iPhone 6s Plus、Apple iPhone 6s , Apple iPhone 5s 开放版, Apple iPhone 6 Mobile 4G, Apple iPhone 6, Apple iPhone 5s Mobile 4G, Apple iPhone 6 Plus, Apple iPhone 5c, Apple iPhone 5, Apple iPhone 4S, Apple iPhone 4 (CDMA 版),. ..
使用新浪微博开放平台api同步微博内容至自己网站(Python微博API获取微博内容作者:更多优惠gt(组图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 77 次浏览 • 2022-03-26 21:19
阿里云 > 云栖社区 > 主题地图 > X > 新浪微博api获取数据
推荐活动:
更多优惠>
当前话题:新浪微博api获取数据加入采集
相关话题:
新浪微博api获取数据相关博客看更多博文
使用新浪微博API的Search接口做微博锐排
作者:郑云1802浏览量:05年前
郑云20100929申请入口:简单介绍一下我们的榜单与新浪自己的热门转发榜单的区别:微博睿推榜单会忽略名人推文,更关注草根推文,更关注社会民生推文,屏蔽非- 有营养的推文。微博锐推列表将汇总以新浪微博为首的国内主要微博网站的信息
阅读全文
Python调用微博API获取微博内容
作者:745 浏览评论:05年前
1:获取app-key和app-secret 用自己的微博账号()登录微博开放平台,在微博开放中心下的“创建应用”下创建应用。随意填写申请信息。填写后就不需要了。提交审核,只需要那个app-ke
阅读全文
开放平台:新浪微博 for iOS
作者:余书仪 845 浏览评论:09年前
简介:新浪微博几乎打通了所有平台数据的API接口。所以很多优秀的第三方微博客户端在功能上都非常全面。通过 SNS 进行分享和推广的方式已经在 App 世界中使用。它很常见,随处可见。本文主要介绍App与新浪微博的关联方式。参考:1.开发
阅读全文
新浪微博发展(一)
作者:nothingfinal1071 浏览评论:08年前
这几天一直在研究新浪微博的授权验证。我在论坛上传了一个例子,找到了一个相关的博客文章。. 本以为很容易理解,但花了很长时间,我还是一头雾水。. 后来想了想,其实别人提供的也只是一些接口和方法,我也没有认真研究过授权过程,所以比较关心代码中那些奇怪的方法。
阅读全文
新浪微博发展(一)
作者:xumaojun1002人浏览评论:08年前
这几天一直在研究新浪微博的授权验证。我在论坛上传了一个例子,找到了一个相关的博客文章。. 本以为很容易理解,但花了很长时间,我还是一头雾水。. 后来想了想,其实别人提供的也只是一些接口和方法,我也没有认真研究过授权过程,所以比较关心代码中那些奇怪的方法。
阅读全文
新浪微博开放平台开发步骤介绍(适合新手)
作者:技术组合950人查看评论数:04年前
我也是新手,第一次使用开放平台进行开发。起初,我觉得我无处可去。经过长时间的摸索,终于成功调用了API。现在把这段经历介绍给新手(高手不用看,当然如果大家能提出一些意见和建议,非常感谢),也想和大家交流。本示例介绍如何使用 API 提交数据(发布微
阅读全文
新浪微博开放平台老API中的PHP例程
作者:何立坚 1019 浏览评论:010年前
相关文章:一、PHP+新浪微博开放平台+新浪云平台(SAE)解决方案基础二、微博应用搭建流程三、PHP中的demo程序SDK简析四、进修趋势及有用资源五、必解的几个问题【PDF全文下载】本文是新浪微博老API中的PHP例程,可以作为第一步
阅读全文
iOS:新浪微博OAuth认证
作者:犹豫1185查看评论:04年前
新浪微博OAuth认证1、资源授权•在腾讯、新浪等互联网行业,用户群体非常庞大•有时需要共享一些用户资源,比如第三方想要访问用户的QQ数据,第三方想要访问用户的新浪微博数据 • 如果要共享用户资源,必须征得用户的同意,那么这里就有资源。
阅读全文 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(Python微博API获取微博内容作者:更多优惠gt(组图))
阿里云 > 云栖社区 > 主题地图 > X > 新浪微博api获取数据

推荐活动:
更多优惠>
当前话题:新浪微博api获取数据加入采集
相关话题:
新浪微博api获取数据相关博客看更多博文
使用新浪微博API的Search接口做微博锐排

作者:郑云1802浏览量:05年前
郑云20100929申请入口:简单介绍一下我们的榜单与新浪自己的热门转发榜单的区别:微博睿推榜单会忽略名人推文,更关注草根推文,更关注社会民生推文,屏蔽非- 有营养的推文。微博锐推列表将汇总以新浪微博为首的国内主要微博网站的信息
阅读全文
Python调用微博API获取微博内容


作者:745 浏览评论:05年前
1:获取app-key和app-secret 用自己的微博账号()登录微博开放平台,在微博开放中心下的“创建应用”下创建应用。随意填写申请信息。填写后就不需要了。提交审核,只需要那个app-ke
阅读全文
开放平台:新浪微博 for iOS

作者:余书仪 845 浏览评论:09年前
简介:新浪微博几乎打通了所有平台数据的API接口。所以很多优秀的第三方微博客户端在功能上都非常全面。通过 SNS 进行分享和推广的方式已经在 App 世界中使用。它很常见,随处可见。本文主要介绍App与新浪微博的关联方式。参考:1.开发
阅读全文
新浪微博发展(一)


作者:nothingfinal1071 浏览评论:08年前
这几天一直在研究新浪微博的授权验证。我在论坛上传了一个例子,找到了一个相关的博客文章。. 本以为很容易理解,但花了很长时间,我还是一头雾水。. 后来想了想,其实别人提供的也只是一些接口和方法,我也没有认真研究过授权过程,所以比较关心代码中那些奇怪的方法。
阅读全文
新浪微博发展(一)


作者:xumaojun1002人浏览评论:08年前
这几天一直在研究新浪微博的授权验证。我在论坛上传了一个例子,找到了一个相关的博客文章。. 本以为很容易理解,但花了很长时间,我还是一头雾水。. 后来想了想,其实别人提供的也只是一些接口和方法,我也没有认真研究过授权过程,所以比较关心代码中那些奇怪的方法。
阅读全文
新浪微博开放平台开发步骤介绍(适合新手)


作者:技术组合950人查看评论数:04年前
我也是新手,第一次使用开放平台进行开发。起初,我觉得我无处可去。经过长时间的摸索,终于成功调用了API。现在把这段经历介绍给新手(高手不用看,当然如果大家能提出一些意见和建议,非常感谢),也想和大家交流。本示例介绍如何使用 API 提交数据(发布微
阅读全文
新浪微博开放平台老API中的PHP例程

作者:何立坚 1019 浏览评论:010年前
相关文章:一、PHP+新浪微博开放平台+新浪云平台(SAE)解决方案基础二、微博应用搭建流程三、PHP中的demo程序SDK简析四、进修趋势及有用资源五、必解的几个问题【PDF全文下载】本文是新浪微博老API中的PHP例程,可以作为第一步
阅读全文
iOS:新浪微博OAuth认证


作者:犹豫1185查看评论:04年前
新浪微博OAuth认证1、资源授权•在腾讯、新浪等互联网行业,用户群体非常庞大•有时需要共享一些用户资源,比如第三方想要访问用户的QQ数据,第三方想要访问用户的新浪微博数据 • 如果要共享用户资源,必须征得用户的同意,那么这里就有资源。
阅读全文
使用新浪微博开放平台api同步微博内容至自己网站(用后端BaaS快速搭建专属无点赞评论——b言b语后,立马就自己动手部署了)
网站优化 • 优采云 发表了文章 • 0 个评论 • 43 次浏览 • 2022-03-26 21:19
“本文参加2020年少数派论文征集+高效行动党”
去年4月,因为疫情,我被迫呆在家里,无法出门与人交流。无意中看到这篇文章防御表情:用后台BaaS快速搭建一个没有点赞评论的专属微博——b词b词之后,我马上自己部署了一个。
我之所以很积极,是因为我曾经在朋友圈发过一张图,完全不知道这张图出了什么问题,这样微信朋友圈、聊天对话甚至里面的对方都可以看不到图片。我也不希望自己的思想或言语无法被自己掌握。如果有一天我不能使用这些平台,我可能会丢失这些数据,并且管理它们很不方便。
为什么要备份?
搭建完成后,您可以随时随地在PC端和移动端发布自己的乱码。但我之所以开始每周备份数据,是因为某天晚上在床上发了一些自己的想法后,不小心打错了一些字,强迫症立马打开网页去了Leancloud后台做出改变。
但是,由于旧版的 Leancloud 网页不适合手机,所有的按钮和文字都挤在了一起。因此,您可以对数据进行更改的区域只是权利的一小部分。新版本的背景如下图所示。左边的界面可以关闭,但是老版本不能一直显示。
虽然老版本的界面有点小心翼翼,但还是可以完成修改数据、保存数据等一系列操作。本来应该点击红框删除一行的,但是那天晚上有点困,没有反复确认就点击了黄框,不小心把全班的数据都删了。
因为Leancloud开发版不支持数据恢复,但商业版的成本是我负担不起的数字,我被迫开始每周使用坚果云+OneDrive进行定期数据备份。
开发版不支持数据恢复。为什么要使用快捷命令进行数据备份?
起初,我使用网页版进行数据备份。我需要每周中午前打开后台,选择我需要备份的班级,然后去邮箱下载资料。
这一步带来了一些不便:
中午前打开后台,不然只能等明天数据导出了;每次都需要手动选择要备份的类;每次打开电脑或手机网页不方便;懒,希望有更简单的方法;
使用快捷命令导出数据以进行备份
突然有一天,我在修改使用快捷方式发出HTTP请求向后台写入数据的时候,想到是否可以通过HTTP请求导出数据?查了Leancloud的文档,找到了对应的API接口。
这种请求格式类似于《B语言b》作者提供的快捷模板。我们只需要将 url 修改为 /exportData。
由于我有两个类需要导出,根据文档说明,我在需要导出的请求体中添加了两个名为 content 和 dream 的类。
指定类
当然,您也可以实现其他操作,这些操作在 API 文档中有所提及。您可以根据需要进行配置,例如:
指定导出数据的开始时间 指定接收邮箱返回导出结果的下载链接... 用 Postman 调试
因为快捷命令不方便调试,而且 Leancloud 对导出数据有限制,所以一天只有三个机会。所以如果你已经安装了Postman软件,建议你先在Postman中测试一下,完成后再填写快捷指令,减少不必要的麻烦。
您可以轻松使用文档中提供的 curl 命令快速导入 Postman 进行调试和配置。
最后只需要为自己的应用修改蓝框中的相关信息即可。
以上信息可以在应用程序的设置——应用程序密钥中找到。复制后直接填写即可。
可以在下方查看是否报错,然后根据文档排查错误。
成功导出
导出 3 次以上后提示自动导出数据
借助快捷方式和自动化,可以完美解决之前遇到的四大烦恼。你需要做的就是找个空闲时间打开邮箱下载资料,优采云福音。
当然你也可以使用服务器,同样的技巧可以通过编写定时任务来实现。
如果大家有更好的办法,欢迎在评论区留言一起讨论。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(用后端BaaS快速搭建专属无点赞评论——b言b语后,立马就自己动手部署了)
“本文参加2020年少数派论文征集+高效行动党”
去年4月,因为疫情,我被迫呆在家里,无法出门与人交流。无意中看到这篇文章防御表情:用后台BaaS快速搭建一个没有点赞评论的专属微博——b词b词之后,我马上自己部署了一个。
我之所以很积极,是因为我曾经在朋友圈发过一张图,完全不知道这张图出了什么问题,这样微信朋友圈、聊天对话甚至里面的对方都可以看不到图片。我也不希望自己的思想或言语无法被自己掌握。如果有一天我不能使用这些平台,我可能会丢失这些数据,并且管理它们很不方便。

为什么要备份?
搭建完成后,您可以随时随地在PC端和移动端发布自己的乱码。但我之所以开始每周备份数据,是因为某天晚上在床上发了一些自己的想法后,不小心打错了一些字,强迫症立马打开网页去了Leancloud后台做出改变。
但是,由于旧版的 Leancloud 网页不适合手机,所有的按钮和文字都挤在了一起。因此,您可以对数据进行更改的区域只是权利的一小部分。新版本的背景如下图所示。左边的界面可以关闭,但是老版本不能一直显示。


虽然老版本的界面有点小心翼翼,但还是可以完成修改数据、保存数据等一系列操作。本来应该点击红框删除一行的,但是那天晚上有点困,没有反复确认就点击了黄框,不小心把全班的数据都删了。

因为Leancloud开发版不支持数据恢复,但商业版的成本是我负担不起的数字,我被迫开始每周使用坚果云+OneDrive进行定期数据备份。

开发版不支持数据恢复。为什么要使用快捷命令进行数据备份?
起初,我使用网页版进行数据备份。我需要每周中午前打开后台,选择我需要备份的班级,然后去邮箱下载资料。
这一步带来了一些不便:
中午前打开后台,不然只能等明天数据导出了;每次都需要手动选择要备份的类;每次打开电脑或手机网页不方便;懒,希望有更简单的方法;

使用快捷命令导出数据以进行备份
突然有一天,我在修改使用快捷方式发出HTTP请求向后台写入数据的时候,想到是否可以通过HTTP请求导出数据?查了Leancloud的文档,找到了对应的API接口。

这种请求格式类似于《B语言b》作者提供的快捷模板。我们只需要将 url 修改为 /exportData。

由于我有两个类需要导出,根据文档说明,我在需要导出的请求体中添加了两个名为 content 和 dream 的类。

指定类
当然,您也可以实现其他操作,这些操作在 API 文档中有所提及。您可以根据需要进行配置,例如:
指定导出数据的开始时间 指定接收邮箱返回导出结果的下载链接... 用 Postman 调试
因为快捷命令不方便调试,而且 Leancloud 对导出数据有限制,所以一天只有三个机会。所以如果你已经安装了Postman软件,建议你先在Postman中测试一下,完成后再填写快捷指令,减少不必要的麻烦。
您可以轻松使用文档中提供的 curl 命令快速导入 Postman 进行调试和配置。



最后只需要为自己的应用修改蓝框中的相关信息即可。

以上信息可以在应用程序的设置——应用程序密钥中找到。复制后直接填写即可。

可以在下方查看是否报错,然后根据文档排查错误。

成功导出

导出 3 次以上后提示自动导出数据
借助快捷方式和自动化,可以完美解决之前遇到的四大烦恼。你需要做的就是找个空闲时间打开邮箱下载资料,优采云福音。



当然你也可以使用服务器,同样的技巧可以通过编写定时任务来实现。
如果大家有更好的办法,欢迎在评论区留言一起讨论。
使用新浪微博开放平台api同步微博内容至自己网站(QQ、微博、github等网站的登陆与注册逻辑)
网站优化 • 优采云 发表了文章 • 0 个评论 • 74 次浏览 • 2022-03-26 21:16
QQ、微博、github等网站的用户数量很大,其他网站为了简化自己的登录注册逻辑网站 ,引入社交登录功能;
步骤:
1),用户点击QQ按钮
2),引导跳转到QQ授权页面
3),用户主动点击授权,跳转到上一个网页。
1、OAuth2.0
(A) 用户打开客户端后,客户端向用户请求授权。
(B) 用户同意授权客户端。
(C)客户端使用上一步获得的授权向认证服务器申请token。
(D)认证服务器对客户端进行认证后,确认无误,同意颁发token。
(E)客户端使用token向资源服务器申请获取资源。
(F) 资源服务器确认token正确,同意向客户端开放资源。
%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6
2、微博登录准备
1、进入微博开放平台
2、登录微博,进入微博,选择网站访问
3、选择立即访问
4、创建您自己的应用程序
5、我们已准备好在开发中进行测试
记住您的应用密钥和应用秘密,我们稍后会使用它
6、输入高级信息,填写授权回调页面地址
7、添加测试账号(可选)
8、进入文档,按照流程测试社交登录
3、微博登录测试
1、将用户引导至以下地址
YOUR_CLIENT_ID:是应用密钥
YOUR_REGISTERED_REDIRECT_URI:是返回成功的uri
2、如果用户同意授权,页面跳转到YOUR_REGISTERED_REDIRECT_URI/?code=CODE
3、使用返回的代码换取访问令牌
像这样返回一个 access_token 和 uid
4、使用AccessToken调用开发API获取用户信息
%E5%BE%AE%E5%8D%9AAPI
例如,获取用户最新发布的微博列表:
至此微博登录调试完成。
Oauth2.0;授权通过后,将code换成access_token,即可访问任意开放的API
1),代码使用后会被销毁
2),access_token 几天都一样
4、社交登录步骤
1),在页面上放一个社交登录按钮,点击地址是
微博登录
2),只要用户通过授权,就会自动跳转到我们指定的那个,并且会在url后面带一个code=xxxxxxxx
3),获取此代码并发送请求以换取 access_token。
4),可以通过access_token调用所有开放的API;
您可以将所有用户信息保存到自己的网站。
核心:
该代码为一次性使用,只要使用就会失效。
access_token:固定,完全固定一段时间。
uid:总是固定的。
我们自己的系统如何识别唯一用户是使用social网站的uid。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(QQ、微博、github等网站的登陆与注册逻辑)
QQ、微博、github等网站的用户数量很大,其他网站为了简化自己的登录注册逻辑网站 ,引入社交登录功能;
步骤:
1),用户点击QQ按钮
2),引导跳转到QQ授权页面
3),用户主动点击授权,跳转到上一个网页。
1、OAuth2.0

(A) 用户打开客户端后,客户端向用户请求授权。
(B) 用户同意授权客户端。
(C)客户端使用上一步获得的授权向认证服务器申请token。
(D)认证服务器对客户端进行认证后,确认无误,同意颁发token。
(E)客户端使用token向资源服务器申请获取资源。
(F) 资源服务器确认token正确,同意向客户端开放资源。
%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6
2、微博登录准备
1、进入微博开放平台
2、登录微博,进入微博,选择网站访问

3、选择立即访问

4、创建您自己的应用程序
5、我们已准备好在开发中进行测试

记住您的应用密钥和应用秘密,我们稍后会使用它
6、输入高级信息,填写授权回调页面地址

7、添加测试账号(可选)
8、进入文档,按照流程测试社交登录
3、微博登录测试
1、将用户引导至以下地址
YOUR_CLIENT_ID:是应用密钥
YOUR_REGISTERED_REDIRECT_URI:是返回成功的uri
2、如果用户同意授权,页面跳转到YOUR_REGISTERED_REDIRECT_URI/?code=CODE
3、使用返回的代码换取访问令牌

像这样返回一个 access_token 和 uid
4、使用AccessToken调用开发API获取用户信息
%E5%BE%AE%E5%8D%9AAPI
例如,获取用户最新发布的微博列表:

至此微博登录调试完成。
Oauth2.0;授权通过后,将code换成access_token,即可访问任意开放的API
1),代码使用后会被销毁
2),access_token 几天都一样
4、社交登录步骤
1),在页面上放一个社交登录按钮,点击地址是
微博登录
2),只要用户通过授权,就会自动跳转到我们指定的那个,并且会在url后面带一个code=xxxxxxxx
3),获取此代码并发送请求以换取 access_token。
4),可以通过access_token调用所有开放的API;
您可以将所有用户信息保存到自己的网站。
核心:
该代码为一次性使用,只要使用就会失效。
access_token:固定,完全固定一段时间。
uid:总是固定的。
我们自己的系统如何识别唯一用户是使用social网站的uid。
使用新浪微博开放平台api同步微博内容至自己网站(ReadMe仓库停止服务.8.0修复bug.v10.8.1)
网站优化 • 优采云 发表了文章 • 0 个评论 • 46 次浏览 • 2022-03-25 03:04
自述文件
公告:
针对Jcenter仓库的宕机问题,我们重新提供了基于MavenCentral仓库的依赖方法并更新了SDK版本
SDK v11.8.1 文档
在项目根目录下的build.gradle文件中添加依赖配置
allprojects {
repositories {
mavenCentral()
……
}
}
在模块的 build.gradle 文件中添加依赖和属性配置
android {
……
defaultConfig {
ndk {
abiFilters 'armeabi' //, 'armeabi-v7a','arm64-v8a'
}
}
}
dependencies {
implementation 'io.github.sinaweibosdk:core:11.8.1@aar'
}
文件地址:文件
新包裹地址:
旧包地址:新版本和文档
v11.8.1
修复部分场景下分享后回调结果无法正确返回的问题。
v11.6.0
修复崩溃。新增超级聊天分享功能(需要与微博协商获得白名单权限才能开发此功能,否则分享无效)
v10.10.0
适配Android 11,支持通过FileProvider分享。
v10.9.0
修复可能的安全问题。
v10.8.0
修复错误。
v10.7.0
20年来的第一个版本,基于v9.12.0的升级。主要解决9.12.0版本的bug.3。v4.xx版本系列不再维护,建议升级。具体访问方法在2019 SDK目录下有文档。如果您在访问过程中遇到问题,请及时联系我解决。()
2019年底,微博SDK版本v9.12.0全新更新:
1.新的SDK接入文档解决了同学们接入时没有详细文档的痛点。
2.新的 SDK API 设计。
3.全新的SDK Demo,支持傻瓜式访问。
4.aar 包瘦身并删除无用代码。
当心:
1.新版本的API发生了变化。如果要升级到最新版本,需要按照文档一步步升级。
2.新版本位置:2019SDK。
3.如果您在新版本的访问中遇到问题,请及时联系我,我看到会及时回复您。( )
数据的下载入口在这个网页的右侧,有一个下载-ZIP按钮,可以本地下载。↗↗
为了方便第三方开发者快速集成微博SDK,我们提供以下联系方式协助开发者进行集成:
QQ群:248982250
QQ群:284084420
QQ群:109094998 邮箱:
微博:新的移动技术
虽然我们提供了几份文件,但总有不满意的地方。为了快速上手,少走弯路,我们建议您使用以下方法来了解和集成微博SDK。
如果您在使用过程中不知道如何解决一些问题,请仔细阅读:常见问题FAQ,并尝试找到相应的答案。
另外,关于SDK的bug反馈、用户体验、建议和不足,请尽量提交到Github,充分利用Github这个工具。目前,SDK有很多不足之处。请给我们一些时间。我们将努力为第三方开发者提供标准化、易用、稳定、可靠、可扩展、可定制的SDK。
发行说明:Android SDK V4.1 版本更改:
v4.4.4
1.去除异常打印堆栈信息。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.4.3
1.解决空指针异常。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.4.2
1.修复恶意启动可能导致的崩溃。(如果没有包注册获取新版本(加入白名单),请联系QQ(879073159))
v4.4.1
1.默认支持armeabi、arm64-v8a、armeabi-v7a架构。
2.修改无法获取权限时可能导致的异常。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.4.0
1.默认支持 armeabi、arm64-v8a 两种架构。
2.修复分享时横竖屏切换导致的异常。
3.修复其他bug(如果没有包注册获取新版本(加入白名单),请联系QQ(879073159))
4.4.3.8 已经报过的,以后不用报了。
v4.3.9
1.修复了分享中遇到的一些bug。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.3.8
1.修复部分bug2.默认只支持armeabi架构3.使用4.3.8时请联系客服进行包注册。联系QQ(879073159)
v4.3.7
1.错误修复
2.添加64位所以
v4.3.6
1.错误修复
v4.3.5
1.修复Android4.4.4以下版本分享后无回调。
v4.3.4
1.错误修复
v4.3.11.修复bug2.关于分享后的回调,4.3.0开始接受如下方式:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
shareHandler.doResultIntent(data,this);
}
v4.3.01.修复bug
v4.2.71.支持微博速成版授权登录
v4.11.修复一些已知bug2.支持多图分享和视频分享3.支持分享视频到微博故事
v4.01.新的授权和分享逻辑,让你的访问更加明确2.修复了一些已知问题
v3.2
新网页授权和共享移除open api相关文档,如果还想继续使用open api,请参考旧版本目录【旧版本相关/demo-src】访问,维护和移除LinkCard模式共享,目前仅支持文字与图片混合(我们不建议您继续使用旧的sdk访问微博进行LinkCard共享,微博客户端将来可能会取消此功能,这可能会导致您的程序异常)删除微博支付功能并简化sdk , 解决已知错误的快速入门概述
微博安卓平台SDK为第三方应用提供简单易用的微博API调用服务,使第三方客户端无需了解复杂的验证机制即可进行授权登录,并提供微博分享功能,可直接通过微博访问。官方客户端分享微博。
本文档详情请参考:微博Android平台SDK文档V4.1.pdf
名词解释名词注释
应用密钥
分配给每个第三方应用程序的应用程序密钥。用于身份验证、显示来源等功能。
重定向URI
第三方应用授权回调页面。推荐使用默认回调页面,可以在新浪微博开放平台->我的应用->应用信息->高级应用->授权设置->应用回调页面找到。
范围
通过范围,平台将向开发者开放更多微博核心功能,同时加强用户隐私保护,提升用户体验。用户有权在新的 OAuth2.0 授权页面上选择分配给应用程序的功能。
访问令牌
代表用户身份的令牌,用于微博API调用。
网页授权
通过WebView授权,返回Token信息。
SSO 授权
通过调用微博客户端授权并返回Token信息。
使用微博sdk授权分享时,请确保您的AppKey、RedirectURI、Scope、PackageName与开发者官网一致。
功能列表1. 认证授权特别说明:新版sdk去掉了openapi功能(包括获取用户信息等方法),授权后获取用户信息请参考openapi接口文档微博开放平台api,使用自带的网络引擎请求数据2.分享到微博
通过微博SDK,第三方应用可以分享文字、图片、视频:
有微博客户
OpenApi openApi 不再在微博 sdk 中维护。如果要使用OpenApi,请参考开发者网站使用自己的网络访问
运行示例代码
为了方便第三方应用更快地集成微博SDK,更清楚地了解微博SDK提供的功能,我们在GitHub上提供了一个简单的示例工程和对应的APK安装包。
**方法一:**通过adb install命令直接安装app_debug.apk(新建文档文件夹下)**方法二:**在Android Studio中导入并运行weibosdkdemo项目(详见Android微博)平台SDK文档4.1.pdf:运行示例代码)
微博SDK和DEMO项目目录结构及分析
微博SDK目前以部分开源的形式提供给第三方开发者。简而言之,可以分为以下三个部分:
集成前准备1. 申请应用的APP_KEY
在这一步,您需要在微博开放平台上注册您的应用,获取APP_KEY,并添加应用的授权回调页面(Redirect URI)。详情请仔细阅读:手机客户端访问( )
2. 注册的应用包名和签名
您需要在微博开放平台上注册应用程序的包名和签名,才能正确进行授权。
请注意:包名和签名未注册,或签名注册错误,将导致授权失败。
应用包名:指AndroidManifest.xml文件中package标签所代表的内容。
应用签名:签名是官方签名工具生成的MD5值。
详情请参考:微博Android平台SDK文档V4.0pdf:如何使用签名工具获取应用的签名?
3. 集成SDK
1:Android Studio访问修改你项目主模块下的build.gradle文件,添加微博sdk的依赖
allprojects {
repositories {
jcenter()
mavenCentral()
maven { url "https://dl.bintray.com/thelasterstar/maven/" }
}
}
compile 'com.sina.weibo.sdk:core:4.4.3:openDefaultRelease@aar'
或者将新建文档目录下的openDefault-4.4.1.aar复制到工程libs目录下,修改build.gradle文件如下:
repositories{
flatDir {
dirs 'libs'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:24.2.1'
compile(name: 'openDefault-4.4.3', ext: 'aar')
}
2:日食:
将github项目下【eclipse集成】目录下的文件复制到你的项目中
3:差不多
微博sdk aar默认提供[armeabi] [armeabi-v7a] [arm64-v8a]三个平台的so。如果需要适配更多版本的so,请到github->so目录获取所有平台so文件
如果只想引入特定平台,在gradle中配置如下
splits {
abi {
enable true
reset()
include 'armeabi' //根据需求自己修改
universalApk true
}
}
4:关于混淆
-keep class com.sina.weibo.sdk.** { *; }
第三方如何使用(认证授权)1.替换自己应用的APP_KEY等参数
鉴于很多第三方开发者在Demo中直接复制使用Constants类,有必要说明一下第三方开发者需要将Constants类中的各种参数替换为自己应用程序的参数。请仔细阅读代码注释。
public interface Constants {
/** 当前 DEMO 应用的 APP_KEY,第三方应用应该使用自己的 APP_KEY 替换该 APP_KEY */
public static final String APP_KEY = "2045436852";
/**
* 当前 DEMO 应用的回调页,第三方应用可以使用自己的回调页。
* 建议使用默认回调页:https://api.weibo.com/oauth2/default.html
*/
public static final String REDIRECT_URL = "http://www.sina.com";
/**
* WeiboSDKDemo 应用对应的权限,第三方开发者一般不需要这么多,可直接设置成空即可。
* 详情请查看 Demo 中对应的注释。
*/
public static final String SCOPE =
"email,direct_messages_read,direct_messages_write,"
+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
+ "follow_app_official_microblog," + "invitation_write";
}
2. 创建微博API接口类对象
mAuthInfo = new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE);
WbSdk.install(this,mAuthInfo);
其中:APP_KEY、REDIRECT_URL、SCOPE需要替换为第三方应用申请的内容。
3. 实现 WbAuthListener 接口
private class SelfWbAuthListener implements com.sina.weibo.sdk.auth.WbAuthListener{
@Override
public void onSuccess(final Oauth2AccessToken token) {
WBAuthActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
mAccessToken = token;
if (mAccessToken.isSessionValid()) {
// 显示 Token
updateTokenView(false);
// 保存 Token 到 SharedPreferences
AccessTokenKeeper.writeAccessToken(WBAuthActivity.this, mAccessToken);
Toast.makeText(WBAuthActivity.this,
R.string.weibosdk_demo_toast_auth_success, Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void cancel() {
Toast.makeText(WBAuthActivity.this,
R.string.weibosdk_demo_toast_auth_canceled, Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(WbConnectErrorMessage errorMessage) {
Toast.makeText(WBAuthActivity.this, errorMessage.getErrorMessage(), Toast.LENGTH_LONG).show();
}
}
4. 调用方法、认证和授权
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler.authorizeWeb(new WbAuthListener());
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler. authorizeClientSso(new WbAuthListener());
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler. authorize(new WbAuthListener());
以上三个授权需要在Activity的onActivityResult函数中调用如下方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (mSsoHandler != null) {
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
其他功能
其他功能请参考文档:微博Android平台SDK文档V4.1.pdf 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(ReadMe仓库停止服务.8.0修复bug.v10.8.1)
自述文件
公告:
针对Jcenter仓库的宕机问题,我们重新提供了基于MavenCentral仓库的依赖方法并更新了SDK版本
SDK v11.8.1 文档
在项目根目录下的build.gradle文件中添加依赖配置
allprojects {
repositories {
mavenCentral()
……
}
}
在模块的 build.gradle 文件中添加依赖和属性配置
android {
……
defaultConfig {
ndk {
abiFilters 'armeabi' //, 'armeabi-v7a','arm64-v8a'
}
}
}
dependencies {
implementation 'io.github.sinaweibosdk:core:11.8.1@aar'
}
文件地址:文件
新包裹地址:
旧包地址:新版本和文档
v11.8.1
修复部分场景下分享后回调结果无法正确返回的问题。
v11.6.0
修复崩溃。新增超级聊天分享功能(需要与微博协商获得白名单权限才能开发此功能,否则分享无效)
v10.10.0
适配Android 11,支持通过FileProvider分享。
v10.9.0
修复可能的安全问题。
v10.8.0
修复错误。
v10.7.0
20年来的第一个版本,基于v9.12.0的升级。主要解决9.12.0版本的bug.3。v4.xx版本系列不再维护,建议升级。具体访问方法在2019 SDK目录下有文档。如果您在访问过程中遇到问题,请及时联系我解决。()
2019年底,微博SDK版本v9.12.0全新更新:
1.新的SDK接入文档解决了同学们接入时没有详细文档的痛点。
2.新的 SDK API 设计。
3.全新的SDK Demo,支持傻瓜式访问。
4.aar 包瘦身并删除无用代码。
当心:
1.新版本的API发生了变化。如果要升级到最新版本,需要按照文档一步步升级。
2.新版本位置:2019SDK。
3.如果您在新版本的访问中遇到问题,请及时联系我,我看到会及时回复您。( )
数据的下载入口在这个网页的右侧,有一个下载-ZIP按钮,可以本地下载。↗↗
为了方便第三方开发者快速集成微博SDK,我们提供以下联系方式协助开发者进行集成:
QQ群:248982250
QQ群:284084420
QQ群:109094998 邮箱:
微博:新的移动技术
虽然我们提供了几份文件,但总有不满意的地方。为了快速上手,少走弯路,我们建议您使用以下方法来了解和集成微博SDK。
如果您在使用过程中不知道如何解决一些问题,请仔细阅读:常见问题FAQ,并尝试找到相应的答案。
另外,关于SDK的bug反馈、用户体验、建议和不足,请尽量提交到Github,充分利用Github这个工具。目前,SDK有很多不足之处。请给我们一些时间。我们将努力为第三方开发者提供标准化、易用、稳定、可靠、可扩展、可定制的SDK。
发行说明:Android SDK V4.1 版本更改:
v4.4.4
1.去除异常打印堆栈信息。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.4.3
1.解决空指针异常。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.4.2
1.修复恶意启动可能导致的崩溃。(如果没有包注册获取新版本(加入白名单),请联系QQ(879073159))
v4.4.1
1.默认支持armeabi、arm64-v8a、armeabi-v7a架构。
2.修改无法获取权限时可能导致的异常。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.4.0
1.默认支持 armeabi、arm64-v8a 两种架构。
2.修复分享时横竖屏切换导致的异常。
3.修复其他bug(如果没有包注册获取新版本(加入白名单),请联系QQ(879073159))
4.4.3.8 已经报过的,以后不用报了。
v4.3.9
1.修复了分享中遇到的一些bug。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.3.8
1.修复部分bug2.默认只支持armeabi架构3.使用4.3.8时请联系客服进行包注册。联系QQ(879073159)
v4.3.7
1.错误修复
2.添加64位所以
v4.3.6
1.错误修复
v4.3.5
1.修复Android4.4.4以下版本分享后无回调。
v4.3.4
1.错误修复
v4.3.11.修复bug2.关于分享后的回调,4.3.0开始接受如下方式:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
shareHandler.doResultIntent(data,this);
}
v4.3.01.修复bug
v4.2.71.支持微博速成版授权登录
v4.11.修复一些已知bug2.支持多图分享和视频分享3.支持分享视频到微博故事
v4.01.新的授权和分享逻辑,让你的访问更加明确2.修复了一些已知问题
v3.2
新网页授权和共享移除open api相关文档,如果还想继续使用open api,请参考旧版本目录【旧版本相关/demo-src】访问,维护和移除LinkCard模式共享,目前仅支持文字与图片混合(我们不建议您继续使用旧的sdk访问微博进行LinkCard共享,微博客户端将来可能会取消此功能,这可能会导致您的程序异常)删除微博支付功能并简化sdk , 解决已知错误的快速入门概述
微博安卓平台SDK为第三方应用提供简单易用的微博API调用服务,使第三方客户端无需了解复杂的验证机制即可进行授权登录,并提供微博分享功能,可直接通过微博访问。官方客户端分享微博。
本文档详情请参考:微博Android平台SDK文档V4.1.pdf
名词解释名词注释
应用密钥
分配给每个第三方应用程序的应用程序密钥。用于身份验证、显示来源等功能。
重定向URI
第三方应用授权回调页面。推荐使用默认回调页面,可以在新浪微博开放平台->我的应用->应用信息->高级应用->授权设置->应用回调页面找到。
范围
通过范围,平台将向开发者开放更多微博核心功能,同时加强用户隐私保护,提升用户体验。用户有权在新的 OAuth2.0 授权页面上选择分配给应用程序的功能。
访问令牌
代表用户身份的令牌,用于微博API调用。
网页授权
通过WebView授权,返回Token信息。
SSO 授权
通过调用微博客户端授权并返回Token信息。
使用微博sdk授权分享时,请确保您的AppKey、RedirectURI、Scope、PackageName与开发者官网一致。
功能列表1. 认证授权特别说明:新版sdk去掉了openapi功能(包括获取用户信息等方法),授权后获取用户信息请参考openapi接口文档微博开放平台api,使用自带的网络引擎请求数据2.分享到微博
通过微博SDK,第三方应用可以分享文字、图片、视频:
有微博客户
OpenApi openApi 不再在微博 sdk 中维护。如果要使用OpenApi,请参考开发者网站使用自己的网络访问
运行示例代码
为了方便第三方应用更快地集成微博SDK,更清楚地了解微博SDK提供的功能,我们在GitHub上提供了一个简单的示例工程和对应的APK安装包。
**方法一:**通过adb install命令直接安装app_debug.apk(新建文档文件夹下)**方法二:**在Android Studio中导入并运行weibosdkdemo项目(详见Android微博)平台SDK文档4.1.pdf:运行示例代码)
微博SDK和DEMO项目目录结构及分析
微博SDK目前以部分开源的形式提供给第三方开发者。简而言之,可以分为以下三个部分:
集成前准备1. 申请应用的APP_KEY
在这一步,您需要在微博开放平台上注册您的应用,获取APP_KEY,并添加应用的授权回调页面(Redirect URI)。详情请仔细阅读:手机客户端访问( )
2. 注册的应用包名和签名
您需要在微博开放平台上注册应用程序的包名和签名,才能正确进行授权。
请注意:包名和签名未注册,或签名注册错误,将导致授权失败。
应用包名:指AndroidManifest.xml文件中package标签所代表的内容。
应用签名:签名是官方签名工具生成的MD5值。
详情请参考:微博Android平台SDK文档V4.0pdf:如何使用签名工具获取应用的签名?
3. 集成SDK
1:Android Studio访问修改你项目主模块下的build.gradle文件,添加微博sdk的依赖
allprojects {
repositories {
jcenter()
mavenCentral()
maven { url "https://dl.bintray.com/thelasterstar/maven/" }
}
}
compile 'com.sina.weibo.sdk:core:4.4.3:openDefaultRelease@aar'
或者将新建文档目录下的openDefault-4.4.1.aar复制到工程libs目录下,修改build.gradle文件如下:
repositories{
flatDir {
dirs 'libs'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:24.2.1'
compile(name: 'openDefault-4.4.3', ext: 'aar')
}
2:日食:
将github项目下【eclipse集成】目录下的文件复制到你的项目中
3:差不多
微博sdk aar默认提供[armeabi] [armeabi-v7a] [arm64-v8a]三个平台的so。如果需要适配更多版本的so,请到github->so目录获取所有平台so文件
如果只想引入特定平台,在gradle中配置如下
splits {
abi {
enable true
reset()
include 'armeabi' //根据需求自己修改
universalApk true
}
}
4:关于混淆
-keep class com.sina.weibo.sdk.** { *; }
第三方如何使用(认证授权)1.替换自己应用的APP_KEY等参数
鉴于很多第三方开发者在Demo中直接复制使用Constants类,有必要说明一下第三方开发者需要将Constants类中的各种参数替换为自己应用程序的参数。请仔细阅读代码注释。
public interface Constants {
/** 当前 DEMO 应用的 APP_KEY,第三方应用应该使用自己的 APP_KEY 替换该 APP_KEY */
public static final String APP_KEY = "2045436852";
/**
* 当前 DEMO 应用的回调页,第三方应用可以使用自己的回调页。
* 建议使用默认回调页:https://api.weibo.com/oauth2/default.html
*/
public static final String REDIRECT_URL = "http://www.sina.com";
/**
* WeiboSDKDemo 应用对应的权限,第三方开发者一般不需要这么多,可直接设置成空即可。
* 详情请查看 Demo 中对应的注释。
*/
public static final String SCOPE =
"email,direct_messages_read,direct_messages_write,"
+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
+ "follow_app_official_microblog," + "invitation_write";
}
2. 创建微博API接口类对象
mAuthInfo = new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE);
WbSdk.install(this,mAuthInfo);
其中:APP_KEY、REDIRECT_URL、SCOPE需要替换为第三方应用申请的内容。
3. 实现 WbAuthListener 接口
private class SelfWbAuthListener implements com.sina.weibo.sdk.auth.WbAuthListener{
@Override
public void onSuccess(final Oauth2AccessToken token) {
WBAuthActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
mAccessToken = token;
if (mAccessToken.isSessionValid()) {
// 显示 Token
updateTokenView(false);
// 保存 Token 到 SharedPreferences
AccessTokenKeeper.writeAccessToken(WBAuthActivity.this, mAccessToken);
Toast.makeText(WBAuthActivity.this,
R.string.weibosdk_demo_toast_auth_success, Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void cancel() {
Toast.makeText(WBAuthActivity.this,
R.string.weibosdk_demo_toast_auth_canceled, Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(WbConnectErrorMessage errorMessage) {
Toast.makeText(WBAuthActivity.this, errorMessage.getErrorMessage(), Toast.LENGTH_LONG).show();
}
}
4. 调用方法、认证和授权
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler.authorizeWeb(new WbAuthListener());
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler. authorizeClientSso(new WbAuthListener());
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler. authorize(new WbAuthListener());
以上三个授权需要在Activity的onActivityResult函数中调用如下方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (mSsoHandler != null) {
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
其他功能
其他功能请参考文档:微博Android平台SDK文档V4.1.pdf
使用新浪微博开放平台api同步微博内容至自己网站(想做个简单的实验的内容不对的地方欢迎拍砖)
网站优化 • 优采云 发表了文章 • 0 个评论 • 52 次浏览 • 2022-03-24 11:05
本文来自:转载请注明出处
额,我只是想做一个简单的实验。如果内容有误,请补砖...
只是在这里使用 JSOUP 给出一些想法
我只爬自己的主页和别人的微博主页,没有尝试过其他爬取(抱歉懒...)
第一种是使用JSOUP登录页面
于是我偷懒,用IE的开发者工具来获取cookie。获取的cookie应该写成map的形式,然后使用代码:
Response res=Jsoup.connect("http://weibo.com").cookies(map).method(Method.POST).execute();
String s=res.body();
有很多发现:
您可以编写自己的脚本来打印 map.put(xxx,xxx)
我这里用scala写了一段,用java写没关系:
s.split("; ").foreach(s => {val x=s.split("=");println(s"""map.put("${x(0)}","${x(1)}");""")});
最后的body 嗯……是一堆脚本标签。顶部是微博固定顶栏的内容(导航栏的内容)
lz试了一下,发现我需要的是 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(想做个简单的实验的内容不对的地方欢迎拍砖)
本文来自:转载请注明出处
额,我只是想做一个简单的实验。如果内容有误,请补砖...
只是在这里使用 JSOUP 给出一些想法
我只爬自己的主页和别人的微博主页,没有尝试过其他爬取(抱歉懒...)
第一种是使用JSOUP登录页面
于是我偷懒,用IE的开发者工具来获取cookie。获取的cookie应该写成map的形式,然后使用代码:
Response res=Jsoup.connect("http://weibo.com").cookies(map).method(Method.POST).execute();
String s=res.body();
有很多发现:

您可以编写自己的脚本来打印 map.put(xxx,xxx)
我这里用scala写了一段,用java写没关系:
s.split("; ").foreach(s => {val x=s.split("=");println(s"""map.put("${x(0)}","${x(1)}");""")});
最后的body 嗯……是一堆脚本标签。顶部是微博固定顶栏的内容(导航栏的内容)
lz试了一下,发现我需要的是
使用新浪微博开放平台api同步微博内容至自己网站(使用新浪微博开放平台apiapi同步微博内容至自己网站)
网站优化 • 优采云 发表了文章 • 0 个评论 • 46 次浏览 • 2022-03-23 21:24
使用新浪微博开放平台api同步微博内容至自己网站,每天定时更新一条。我想这应该不属于侵权。当然,你如果要涉及到隐私问题就不好说了。
可以,只要你是个人或者公司,你发的每条微博,都是经过真实的人肉采集传播的,只要你注明,你是人肉传播,或者你是单位,那么,不去采集的人用户的微博都可以自动转化为采集之后的微博。
mgc内容可以使用新浪官方api解析到gallery_web_page.php页面里的链接。然后拿到里面的内容(地址不要写错,不要被新浪解析当成了谷歌地址)用xml或者json都可以。地址最好写为:,详细的api接口参数可以查看以下。不同的地址接口实现都有所不同。百度:gallery_web_page.php[1]地址domdownload"../"也可以直接使用你的githubrepo或者命名的地址。
通过srv之类的扫描引擎可以找到里面的链接,这个链接可以作为参考去拿到你所有被采集过的微博的地址。参考内容如下:mgc链接xml的解析方法。
现在转到自己网站不怎么怕被识别侵权,主要看别人的抓取时间及抓取量。每个可抓取的微博下存在微博账号的集中区,通过ip找到他所在位置,然后抓取他的所有微博,精准识别到他真实身份,不违法。
只要能抓出来账号, 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(使用新浪微博开放平台apiapi同步微博内容至自己网站)
使用新浪微博开放平台api同步微博内容至自己网站,每天定时更新一条。我想这应该不属于侵权。当然,你如果要涉及到隐私问题就不好说了。
可以,只要你是个人或者公司,你发的每条微博,都是经过真实的人肉采集传播的,只要你注明,你是人肉传播,或者你是单位,那么,不去采集的人用户的微博都可以自动转化为采集之后的微博。
mgc内容可以使用新浪官方api解析到gallery_web_page.php页面里的链接。然后拿到里面的内容(地址不要写错,不要被新浪解析当成了谷歌地址)用xml或者json都可以。地址最好写为:,详细的api接口参数可以查看以下。不同的地址接口实现都有所不同。百度:gallery_web_page.php[1]地址domdownload"../"也可以直接使用你的githubrepo或者命名的地址。
通过srv之类的扫描引擎可以找到里面的链接,这个链接可以作为参考去拿到你所有被采集过的微博的地址。参考内容如下:mgc链接xml的解析方法。
现在转到自己网站不怎么怕被识别侵权,主要看别人的抓取时间及抓取量。每个可抓取的微博下存在微博账号的集中区,通过ip找到他所在位置,然后抓取他的所有微博,精准识别到他真实身份,不违法。
只要能抓出来账号,
使用新浪微博开放平台api同步微博内容至自己网站(微博开放平台升级推出新版微博分享接口/upload分享链接)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-03-21 07:25
为应对黑行业利用微博开放界面刷话题、普及的现状,对微博开放平台进行了升级,并推出了新版微博分享界面。新的分享界面如下:
statuses/share 第三方微博分享链接(点击链接查看接口文档)
第三方开发者需要升级切换原来的分享界面,转发微博到上面的新分享界面。原来需要升级的接口有:
statuses/repost 转发微博
statuses/update 发布微博
statuses/upload 上传图片和发微博
statuses/upload_url_text 发一条微博并指定上传的图片
statuses/destroy 删除微博
第三方开发者必须在2017年6月30日前完成升级和切换工作。之后,原微博分享转发接口将受到限制。
如果第三方开发者需要更丰富的分享功能,微博开放平台推荐开发者使用微博SDK中集成的分享功能,实现对微博的完整分享。
微博SDK:
iOS - /sinaweibosdk/weibo_ios_sdk
安卓 - /sinaweibosdk/weibo_android_sdk
个人参考 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(微博开放平台升级推出新版微博分享接口/upload分享链接)
为应对黑行业利用微博开放界面刷话题、普及的现状,对微博开放平台进行了升级,并推出了新版微博分享界面。新的分享界面如下:
statuses/share 第三方微博分享链接(点击链接查看接口文档)
第三方开发者需要升级切换原来的分享界面,转发微博到上面的新分享界面。原来需要升级的接口有:
statuses/repost 转发微博
statuses/update 发布微博
statuses/upload 上传图片和发微博
statuses/upload_url_text 发一条微博并指定上传的图片
statuses/destroy 删除微博
第三方开发者必须在2017年6月30日前完成升级和切换工作。之后,原微博分享转发接口将受到限制。
如果第三方开发者需要更丰富的分享功能,微博开放平台推荐开发者使用微博SDK中集成的分享功能,实现对微博的完整分享。
微博SDK:
iOS - /sinaweibosdk/weibo_ios_sdk
安卓 - /sinaweibosdk/weibo_android_sdk
个人参考
使用新浪微博开放平台api同步微博内容至自己网站(使用API提交数据(发布一条微博信息)(组图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 100 次浏览 • 2022-04-10 03:16
我也是新手,第一次使用开放平台进行开发。起初,我觉得我无处可去。经过长时间的摸索,终于成功调用了API。现在给新手介绍一下这段经历(高手不用看,当然如果大家能提出一些意见和建议,非常感谢),也想和大家交流。
本例介绍如何使用 API 提交数据(发布一条微博)和使用 API 获取数据(获取最新的 20 条公开微博消息),即官方 API Go 中的“获取下行数据集(时间线)接口”到“微博访问界面”下的“statuses/public_timeline 获取最新更新的公众微博新闻”和“statuses/update 发布微博消息”。
首先,你必须有新浪微博账号并申请一个app key(详情请参考%E6%96%B0%E6%89%8B%E6%8C%87%E5%8D%97),然后在VS中新建一个解决方案,在解决方案中添加一个类库和一个网站,并添加一个引用(网站指的是类库)。
由于发微博是POST请求,获取数据是GET请求,并且是通过HTTP Basic Authentication授权的,所以我把这些函数写在一个类中(在类库中),代码如下(这个类参考to , 没有仔细考虑达到普遍性):
发送请求和授权码
然后在类库中新建两个实体类status和user,字段与官方API一致:
状态实体类
用户实体类
好了,经过以上步骤,准备工作就完成了。现在让我们开始调用 API。我们先来看发布一条微博消息。虽然在这个文章()中已经介绍过了,但为了本文的完整性,我还是贴出来。我的代码,在类库中添加一个微博访问类MiniBlogVisit类:
微博接入类
您可以通过调用 update 方法发布微博。不过需要注意的是,这里的Content要用HttpUtility.UrlEncode编码,否则会出现乱码。
我们来看看最新的20条公众微博消息,这是官方API中的第一个接口。这里返回的数据是 XML 数据或 JSON 数据。您可以根据自己的喜好自由选择。我选择返回 XML 数据。我的方法是将返回的 XML 数据写入 XML 文件,然后解析 XML 文件。代码如下:
获取数据代码
好了,现在该调用了,调用比较简单,就是一个空的Default.aspx页面,后台代码如下:
调用代码
至此,所有的代码都写好了,我们来看看完整的解决方案:
运行后的效果如下:
第一次调用API,第一次写这么长的文章。欢迎大家多多评论!!! 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(使用API提交数据(发布一条微博信息)(组图))
我也是新手,第一次使用开放平台进行开发。起初,我觉得我无处可去。经过长时间的摸索,终于成功调用了API。现在给新手介绍一下这段经历(高手不用看,当然如果大家能提出一些意见和建议,非常感谢),也想和大家交流。
本例介绍如何使用 API 提交数据(发布一条微博)和使用 API 获取数据(获取最新的 20 条公开微博消息),即官方 API Go 中的“获取下行数据集(时间线)接口”到“微博访问界面”下的“statuses/public_timeline 获取最新更新的公众微博新闻”和“statuses/update 发布微博消息”。
首先,你必须有新浪微博账号并申请一个app key(详情请参考%E6%96%B0%E6%89%8B%E6%8C%87%E5%8D%97),然后在VS中新建一个解决方案,在解决方案中添加一个类库和一个网站,并添加一个引用(网站指的是类库)。

由于发微博是POST请求,获取数据是GET请求,并且是通过HTTP Basic Authentication授权的,所以我把这些函数写在一个类中(在类库中),代码如下(这个类参考to , 没有仔细考虑达到普遍性):

发送请求和授权码
然后在类库中新建两个实体类status和user,字段与官方API一致:

状态实体类

用户实体类
好了,经过以上步骤,准备工作就完成了。现在让我们开始调用 API。我们先来看发布一条微博消息。虽然在这个文章()中已经介绍过了,但为了本文的完整性,我还是贴出来。我的代码,在类库中添加一个微博访问类MiniBlogVisit类:

微博接入类
您可以通过调用 update 方法发布微博。不过需要注意的是,这里的Content要用HttpUtility.UrlEncode编码,否则会出现乱码。
我们来看看最新的20条公众微博消息,这是官方API中的第一个接口。这里返回的数据是 XML 数据或 JSON 数据。您可以根据自己的喜好自由选择。我选择返回 XML 数据。我的方法是将返回的 XML 数据写入 XML 文件,然后解析 XML 文件。代码如下:

获取数据代码
好了,现在该调用了,调用比较简单,就是一个空的Default.aspx页面,后台代码如下:

调用代码
至此,所有的代码都写好了,我们来看看完整的解决方案:

运行后的效果如下:

第一次调用API,第一次写这么长的文章。欢迎大家多多评论!!!
使用新浪微博开放平台api同步微博内容至自己网站(插件的“同步微博”中设置,你知道吗?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 61 次浏览 • 2022-04-09 10:27
提示:此功能在插件的“同步微博”中设置。
①自定义消息的“更新间隔”是指修改文章时是否需要再次同步文章到微博,设置为0表示不再同步,否则请填写天根据实际情况!
②禁止同步的文章分类ID,这里的意思是如果你不想同步的分类下有文章,只需要填写数字,多个分类是被逗号隔开 (,)。
③多作者博客,即每个作者发布的文章同步到各自的微博,可以通知他们在我的个人资料中设置。打开看看情况!
④ Twitter 是否使用代理?
国内主机用户使用推特必须勾选,国外主机不勾选,不使用推特请不要勾选!
⑤ 无法绑定账号
此项表示绑定账号时只需要检查主机何时出错。勾选后即可获取授权码,然后点击下方“账号绑定”图标上对应的微博图标,填写授权码。如果可以正常绑定账号,请不要勾选,因为勾选后将无法自定义api key,微博的“from XXX”也无法显示。
⑥服务器时间修正
有些微博对服务器时间有限制,比如腾讯微博、QQ登录、豆瓣等,如果你的服务器时间和他们的相差太大,就会出现错误。请点击“环境检查”,有一个当前的服务器时间,和你的电脑(北京时间)对比一下,几分钟就能看出差别!然后填写,如果没有问题就不用填写了。
⑦开放平台
这里的设置是显示微博的“来自XXX”。如未申请并通过审核,请勿填写。请点击以下网址申请:
腾讯微博开放平台:
新浪微博开放平台:
搜狐微博开放平台:
网易微博开放平台:
注意:更改APP密钥后,请重新绑定对应账号!
⑧账户绑定
不用说,您可以通过点击相应的微博图标来绑定您的帐户。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(插件的“同步微博”中设置,你知道吗?)
提示:此功能在插件的“同步微博”中设置。
①自定义消息的“更新间隔”是指修改文章时是否需要再次同步文章到微博,设置为0表示不再同步,否则请填写天根据实际情况!
②禁止同步的文章分类ID,这里的意思是如果你不想同步的分类下有文章,只需要填写数字,多个分类是被逗号隔开 (,)。
③多作者博客,即每个作者发布的文章同步到各自的微博,可以通知他们在我的个人资料中设置。打开看看情况!
④ Twitter 是否使用代理?
国内主机用户使用推特必须勾选,国外主机不勾选,不使用推特请不要勾选!
⑤ 无法绑定账号
此项表示绑定账号时只需要检查主机何时出错。勾选后即可获取授权码,然后点击下方“账号绑定”图标上对应的微博图标,填写授权码。如果可以正常绑定账号,请不要勾选,因为勾选后将无法自定义api key,微博的“from XXX”也无法显示。
⑥服务器时间修正
有些微博对服务器时间有限制,比如腾讯微博、QQ登录、豆瓣等,如果你的服务器时间和他们的相差太大,就会出现错误。请点击“环境检查”,有一个当前的服务器时间,和你的电脑(北京时间)对比一下,几分钟就能看出差别!然后填写,如果没有问题就不用填写了。
⑦开放平台
这里的设置是显示微博的“来自XXX”。如未申请并通过审核,请勿填写。请点击以下网址申请:
腾讯微博开放平台:
新浪微博开放平台:
搜狐微博开放平台:
网易微博开放平台:
注意:更改APP密钥后,请重新绑定对应账号!
⑧账户绑定
不用说,您可以通过点击相应的微博图标来绑定您的帐户。
使用新浪微博开放平台api同步微博内容至自己网站(新浪微博的API让你蛋碎到极致:weibo4j-oauth2)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-04-07 22:23
但是新浪提供的API可以用繁琐的项目来形容,尤其是关于java的API。javaAPI的三个版本会让你的蛋破到极致:weibo4j-oauth2.0、weibo4jandroid、android-sdk这三个版本真的是逆天了。由于新浪微博将v1改为v2,weibo4jandroid已经不可用了,所以我们只能使用剩下的两个。但是当你下载它时非常难
版本,运行这个程序,发现只能获取代码,不能获取accesstoken,打开源代码,点击里面的MainActivity,找到一句操蛋到想断了自己的鸡:
别着急,新浪其实已经提供了通过code转成token的方法,不过不是在android-sdk中间,而是在weibo4j.examples.oauth2.OAuth4Code里面weibo4j:
1、在微博开发平台注册开发者用户并审核来电
2、正在创建并批准一个新的应用程序
3、在微博开发平台下载SDK中对应的程序(包)
4、运行程序(做一些相应的修改)
希望现在的新学者能有所帮助
但是新浪提供的API可以用繁琐的项目来形容,尤其是关于java的API。javaAPI的三个版本会让你的蛋破到极致:weibo4j-oauth2.0、weibo4jandroid、android-sdk这三个版本真的是逆天了。由于新浪微博将v1改为v2,weibo4jandroid已经不可用了,所以我们只能使用剩下的两个。但是当你很用力下载版本的时候,运行程序,发现只能获取代码,不能获取accesstoken,打开源码,点击里面的MainActivity,找到一句操蛋到想剪的句子自己吃鸡:别担心,新浪其实已经提供了通过代码转成token的方法,不过不是在android-sdk中间,而是在weibo4j.examples.oauth2.
详细讲解一下如何使用新浪微博的API——但是新浪提供的API可以说是一个复杂的工程,尤其是java的API。三个版本的javaAPI会让你的蛋破到极致:weibo4j-oauth2.0,源代码weibo4jandroid和android-sdk三个版本真是逆天了。由于新浪微博将v1改成v2,weibo4jandroid一直不可用,...
如何使用新浪微博API开放平台进行程序开发——但是新浪提供的API可谓是一个繁琐的工程,尤其是java API。javaAPI的三个版本会让你把蛋破到极致:weibo4j-oauth2.0、weibo4jandroid、android-sdk这三个版本真是逆天了。由于新浪微博将v1改成v2,weibo4jandroid就不能用了,所以只能...
如何调用api发送微博————
如何调用新浪微博api?—— 可以参考新浪微博官方开放平台:关于API调用,官方API文档中有更详细的介绍:%E6%96%87%E6%A1%A3.
微博api开放了哪些功能?简单介绍一下用过的,谢谢!——微博开放平台是基于新浪微博系统的开放信息订阅、分享和交流平台。微博开放平台为您提供随时随地发生的海量微博资讯、粉丝关系、信息裂变式传播渠道。您可以登录平台创建应用,使用微博平台提供的界面创建有趣的...
微博开放平台接口——微博开放平台是微博系统与外部网站通过API接口交换信息的接口方式。新浪微博已部分开放API功能,微博文学网已开放普通网站API功能。长期用户已开通分享API功能。有关详细信息,请阅读:
如何通过python调用新浪微博的API——大家可以通过新浪微博开发者平台注册自己的应用。我在网站上注册了一个应用程序。注册后,每个应用都会被分配一个唯一的 app key 和 app secret ,需要在上面提到的授权机制中使用,相当于每个应用的标记。
如何申请新浪微博的网站 API?- ——那不是新浪的API,是网站分享插件。现在比较流行的是JiaThis,你可以通过搜索找到它。还有bshare,addthis,有订阅功能。
如何在新浪微博开放平台实现应用——看看这个你就明白了,要创建一个应用,你可以在拿到AppKey后打开这个页面,创建一个按钮,把这个按钮添加到你的网页中~
新浪微博内容接口如何使用... JAVA相关——新浪上有一个OpenAPI接口,可以学习新浪给出的例子 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(新浪微博的API让你蛋碎到极致:weibo4j-oauth2)
但是新浪提供的API可以用繁琐的项目来形容,尤其是关于java的API。javaAPI的三个版本会让你的蛋破到极致:weibo4j-oauth2.0、weibo4jandroid、android-sdk这三个版本真的是逆天了。由于新浪微博将v1改为v2,weibo4jandroid已经不可用了,所以我们只能使用剩下的两个。但是当你下载它时非常难
版本,运行这个程序,发现只能获取代码,不能获取accesstoken,打开源代码,点击里面的MainActivity,找到一句操蛋到想断了自己的鸡:
别着急,新浪其实已经提供了通过code转成token的方法,不过不是在android-sdk中间,而是在weibo4j.examples.oauth2.OAuth4Code里面weibo4j:
1、在微博开发平台注册开发者用户并审核来电
2、正在创建并批准一个新的应用程序
3、在微博开发平台下载SDK中对应的程序(包)
4、运行程序(做一些相应的修改)
希望现在的新学者能有所帮助
但是新浪提供的API可以用繁琐的项目来形容,尤其是关于java的API。javaAPI的三个版本会让你的蛋破到极致:weibo4j-oauth2.0、weibo4jandroid、android-sdk这三个版本真的是逆天了。由于新浪微博将v1改为v2,weibo4jandroid已经不可用了,所以我们只能使用剩下的两个。但是当你很用力下载版本的时候,运行程序,发现只能获取代码,不能获取accesstoken,打开源码,点击里面的MainActivity,找到一句操蛋到想剪的句子自己吃鸡:别担心,新浪其实已经提供了通过代码转成token的方法,不过不是在android-sdk中间,而是在weibo4j.examples.oauth2.
详细讲解一下如何使用新浪微博的API——但是新浪提供的API可以说是一个复杂的工程,尤其是java的API。三个版本的javaAPI会让你的蛋破到极致:weibo4j-oauth2.0,源代码weibo4jandroid和android-sdk三个版本真是逆天了。由于新浪微博将v1改成v2,weibo4jandroid一直不可用,...
如何使用新浪微博API开放平台进行程序开发——但是新浪提供的API可谓是一个繁琐的工程,尤其是java API。javaAPI的三个版本会让你把蛋破到极致:weibo4j-oauth2.0、weibo4jandroid、android-sdk这三个版本真是逆天了。由于新浪微博将v1改成v2,weibo4jandroid就不能用了,所以只能...
如何调用api发送微博————
如何调用新浪微博api?—— 可以参考新浪微博官方开放平台:关于API调用,官方API文档中有更详细的介绍:%E6%96%87%E6%A1%A3.
微博api开放了哪些功能?简单介绍一下用过的,谢谢!——微博开放平台是基于新浪微博系统的开放信息订阅、分享和交流平台。微博开放平台为您提供随时随地发生的海量微博资讯、粉丝关系、信息裂变式传播渠道。您可以登录平台创建应用,使用微博平台提供的界面创建有趣的...
微博开放平台接口——微博开放平台是微博系统与外部网站通过API接口交换信息的接口方式。新浪微博已部分开放API功能,微博文学网已开放普通网站API功能。长期用户已开通分享API功能。有关详细信息,请阅读:
如何通过python调用新浪微博的API——大家可以通过新浪微博开发者平台注册自己的应用。我在网站上注册了一个应用程序。注册后,每个应用都会被分配一个唯一的 app key 和 app secret ,需要在上面提到的授权机制中使用,相当于每个应用的标记。
如何申请新浪微博的网站 API?- ——那不是新浪的API,是网站分享插件。现在比较流行的是JiaThis,你可以通过搜索找到它。还有bshare,addthis,有订阅功能。
如何在新浪微博开放平台实现应用——看看这个你就明白了,要创建一个应用,你可以在拿到AppKey后打开这个页面,创建一个按钮,把这个按钮添加到你的网页中~
新浪微博内容接口如何使用... JAVA相关——新浪上有一个OpenAPI接口,可以学习新浪给出的例子
使用新浪微博开放平台api同步微博内容至自己网站(微博信息抓取系统第0页共26页微博信息)
网站优化 • 优采云 发表了文章 • 0 个评论 • 52 次浏览 • 2022-04-07 04:18
文档介绍:微博信息采集系统 第0页,共26页 微博信息采集系统 [摘要] 针对微博海量数据和用户关系群,本文提出并实现了一个基于新浪开放平台和Oauth的实现2.0 微博信息采集系统。系统实现的主要功能有: (1) 抓取微博大厅滚动的微博及其评论(2) 抓取微博用户的好友及其相互关系。通过线程池和数据库实现微博信息的抓取和存储,通过prefuse的API将用户关系图形化展示,从实际运行效果分析,抓取系统可以满足各种SNS应用的内容填充,和网络用户的社交网络。网络关系分析。【关键词】 Oauth2.0 ; 新浪开放平台;社交网络关系;prefuse 1 引言1.1 研究背景及意义微博迎来了真正的微博时代。微博内容短、写作门槛低、传播渠道便捷、多元化、同步化,使得信息生产趋于零时间。与其他信息交流方式不同,微博最大的特点是技术上的可移植性。2009年,3G牌照的发放标志着移动互联网时代的到来。手机和互联网这两个中国发展最快的媒体开始融合在一起,为微博的快速扩张做出了技术贡献。与传统博客相比,
用户可以通过多种方式登录微博,发布微博。尤其是手机与微博的绑定,让这个新媒体更贴近微博用户,满足4A的要素,即Anything,anywhere,anyone,anytime。任何用户都可以随时随地发布任何内容。从此,人们的信息交流得到了前所未有的解放。微博信息采集系统通过开放平台的API采集我们需要的信息,并在运营初期为各种SNS[1]社区应用丰富其数据量和用户量,以吸引更多用户关注和使用. SNS 社区交友是现在网络用户相互交流最重要的方式。目前最流行的SNS网络是开心网、人人网和各大微博。他们之中,新浪微博拥有最多的活跃用户。信息采集功能。整个系统的框架具有很强的扩展性,可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。信息采集功能。整个系统的框架具有很强的扩展性,可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。信息采集功能。整个系统的框架具有很强的扩展性,可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。并以图形方式展示网络用户之间的社交网络关系1.2 本项目的主要工作 本文要解决的主要问题是抓取新浪微博Lobby Data的微博及其相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。并以图形方式展示网络用户之间的社交网络关系1.2 本项目的主要工作 本文要解决的主要问题是抓取新浪微博Lobby Data的微博及其相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。
并通过 Prefuse 将捕获到的微博用户的好友关系可视化。实施全自动捕获、解析和数据存储过程。大大提高了信息采集的工作效率,大大降低了信息采集的错误率。满足企事业单位对微博信息的内容需求和网络微博信息采集系统用户的社会关系分析。2 新浪微博开放平台2.1 微博用户授权与认证2.1.1 新浪微博应用创建新浪微博开放平台允许所有微博用户创建自己的应用,用户可以创建您自己的应用只要填写开发者的详细信息和应用的相关信息即可。应用创建成功后,开发者会得到应用的APP KEY和Sercret Key。我们通过这两个键进行相关的技术开发工作。并通过这两个键唯一标识我们的应用程序。其新浪微博应用创建与发布流程图如图1所示。 图1 新浪开放平台应用创建流程及下个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。我们通过这两个键进行相关的技术开发工作。并通过这两个键唯一标识我们的应用程序。其新浪微博应用创建与发布流程图如图1所示。 图1 新浪开放平台应用创建流程及下个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。我们通过这两个键进行相关的技术开发工作。并通过这两个键唯一标识我们的应用程序。其新浪微博应用创建与发布流程图如图1所示。 图1 新浪开放平台应用创建流程及下个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。图1 新浪开放平台应用创建流程及下一个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。图1 新浪开放平台应用创建流程及下一个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。
OAuth 允许用户提供令牌而不是用户名和密码来访问他们存储在特定服务提供商处的数据。每个令牌授权特定的网站(例如,视频编辑器网站)在指定的时间段(例如,接下来的 2 小时)内访问特定资源(例如,只是某个专辑)。 )。通过这种方式,OAuth 允许用户授权第三方网站访问他们存储在另一个服务提供商上的信息,而无需共享他们的访问权限或他们数据的全部内容。与 OAuth1.0 相比,OAuth2.0 的整个授权验证过程更简单、更安全。也是新浪微博开发平台未来最重要的用户认证和授权方式。使用新的 2. 0 授权认证协议。开发者只需要调用oauth2/authorize接口引导用户进行授权,授权后重定向的网页获取代码后,从服务器的oauth2/access_token接口交换access_token,即可使用access_token。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(微博信息抓取系统第0页共26页微博信息)
文档介绍:微博信息采集系统 第0页,共26页 微博信息采集系统 [摘要] 针对微博海量数据和用户关系群,本文提出并实现了一个基于新浪开放平台和Oauth的实现2.0 微博信息采集系统。系统实现的主要功能有: (1) 抓取微博大厅滚动的微博及其评论(2) 抓取微博用户的好友及其相互关系。通过线程池和数据库实现微博信息的抓取和存储,通过prefuse的API将用户关系图形化展示,从实际运行效果分析,抓取系统可以满足各种SNS应用的内容填充,和网络用户的社交网络。网络关系分析。【关键词】 Oauth2.0 ; 新浪开放平台;社交网络关系;prefuse 1 引言1.1 研究背景及意义微博迎来了真正的微博时代。微博内容短、写作门槛低、传播渠道便捷、多元化、同步化,使得信息生产趋于零时间。与其他信息交流方式不同,微博最大的特点是技术上的可移植性。2009年,3G牌照的发放标志着移动互联网时代的到来。手机和互联网这两个中国发展最快的媒体开始融合在一起,为微博的快速扩张做出了技术贡献。与传统博客相比,
用户可以通过多种方式登录微博,发布微博。尤其是手机与微博的绑定,让这个新媒体更贴近微博用户,满足4A的要素,即Anything,anywhere,anyone,anytime。任何用户都可以随时随地发布任何内容。从此,人们的信息交流得到了前所未有的解放。微博信息采集系统通过开放平台的API采集我们需要的信息,并在运营初期为各种SNS[1]社区应用丰富其数据量和用户量,以吸引更多用户关注和使用. SNS 社区交友是现在网络用户相互交流最重要的方式。目前最流行的SNS网络是开心网、人人网和各大微博。他们之中,新浪微博拥有最多的活跃用户。信息采集功能。整个系统的框架具有很强的扩展性,可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。信息采集功能。整个系统的框架具有很强的扩展性,可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。信息采集功能。整个系统的框架具有很强的扩展性,可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。可以根据需要添加其他SNS网络社区的爬取模块。此外,系统还从网络用户的社交网络关系入手,以图形方式展示网络用户之间的社交网络关系1.2本项目的主要工作本文要解决的主要问题是新浪微博大堂数据的微博有相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。并以图形方式展示网络用户之间的社交网络关系1.2 本项目的主要工作 本文要解决的主要问题是抓取新浪微博Lobby Data的微博及其相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。并以图形方式展示网络用户之间的社交网络关系1.2 本项目的主要工作 本文要解决的主要问题是抓取新浪微博Lobby Data的微博及其相关评论和用户信息。包括新浪微博的Oauth2.0认证,通过调用新浪微博的API,获取并解析服务器返回的json文档,建立相应的数据库,并存储在数据库中。
并通过 Prefuse 将捕获到的微博用户的好友关系可视化。实施全自动捕获、解析和数据存储过程。大大提高了信息采集的工作效率,大大降低了信息采集的错误率。满足企事业单位对微博信息的内容需求和网络微博信息采集系统用户的社会关系分析。2 新浪微博开放平台2.1 微博用户授权与认证2.1.1 新浪微博应用创建新浪微博开放平台允许所有微博用户创建自己的应用,用户可以创建您自己的应用只要填写开发者的详细信息和应用的相关信息即可。应用创建成功后,开发者会得到应用的APP KEY和Sercret Key。我们通过这两个键进行相关的技术开发工作。并通过这两个键唯一标识我们的应用程序。其新浪微博应用创建与发布流程图如图1所示。 图1 新浪开放平台应用创建流程及下个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。我们通过这两个键进行相关的技术开发工作。并通过这两个键唯一标识我们的应用程序。其新浪微博应用创建与发布流程图如图1所示。 图1 新浪开放平台应用创建流程及下个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。我们通过这两个键进行相关的技术开发工作。并通过这两个键唯一标识我们的应用程序。其新浪微博应用创建与发布流程图如图1所示。 图1 新浪开放平台应用创建流程及下个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。图1 新浪开放平台应用创建流程及下一个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。图1 新浪开放平台应用创建流程及下一个版本发布流程图。OAuth(开放授权)是一种开放标准,允许用户允许第三方应用程序访问用户存储在 网站 上的私有资源(如照片、视频、联系人列表),而无需用户名和密码提供到第三方应用程序。
OAuth 允许用户提供令牌而不是用户名和密码来访问他们存储在特定服务提供商处的数据。每个令牌授权特定的网站(例如,视频编辑器网站)在指定的时间段(例如,接下来的 2 小时)内访问特定资源(例如,只是某个专辑)。 )。通过这种方式,OAuth 允许用户授权第三方网站访问他们存储在另一个服务提供商上的信息,而无需共享他们的访问权限或他们数据的全部内容。与 OAuth1.0 相比,OAuth2.0 的整个授权验证过程更简单、更安全。也是新浪微博开发平台未来最重要的用户认证和授权方式。使用新的 2. 0 授权认证协议。开发者只需要调用oauth2/authorize接口引导用户进行授权,授权后重定向的网页获取代码后,从服务器的oauth2/access_token接口交换access_token,即可使用access_token。
使用新浪微博开放平台api同步微博内容至自己网站(腾讯微博开放平台正式上线,为开发者和用户提供开放数据分享与传播平台)
网站优化 • 优采云 发表了文章 • 0 个评论 • 255 次浏览 • 2022-04-06 02:18
12月16日,腾讯微博开放平台正式上线。基于腾讯微博系统,为开发者和用户提供一个开放的数据共享和传播平台。广大开发者和用户登录平台后,可以利用平台提供的开放API接口创建应用程序,从微博系统中获取信息,或者向整个微博系统传播新的信息。就在几天前,新浪微博创新基金刚刚开始接受申请,主要面向新浪微博应用的创业者。由此可以看出,国内微博应用市场正在逐渐竞争,竞争也越来越激烈。
据腾讯微博开放平台网站介绍,该开放平台基于腾讯微博系统,定位为开放数据共享传播平台。登录平台创建应用后,您可以通过从平台获取的应用App Key和App Secret,使用各种API实现丰富的应用功能。应用依赖用户账号访问其微博账号读写内容,首次使用时需要用户授权,授权系统使用Oauth机制。获得用户授权后,应用可以获取当前用户的用户名、头像图片、当前用户的听众和收听名单等信息,
获得用户账号授权后,可以使用平台提供的API创建以下功能:
快速分享内容到微博。腾讯微博用户关系开放,互动性强。通过用户之间的交互和传播,信息可以呈几何级数传播。传播的内容也会在微博网站上展示,用户点击链接后可以直接进入指定页面,起到为网站吸引流量的作用。基于微博互动建立用户关系。通过向用户展示最新的微博信息,并提供即时收听功能,帮助用户建立互动关系。平台提供的微博秀应用程序让您只需几行 HTML 代码,即可在 网站 上显示您的新微博更新。获取微博信息作为内容。您可以获取整个微博平台的最新微博信息,或者指定用户发布/收听的微博信息,并作为内容展示在您的网站/软件中。腾讯微博有很多名人和专业人士活跃,最新最真实的新闻可以作为内容。
开发者构建微博应用后,可以将应用源字段提交给腾讯审核。申请提交审核通过后,申请发送的微博信息将在腾讯微博等应用中显示,并附有申请的来源字段和来源URL信息。当用户点击时,会打开网站,为网站带来流量。
源字段的审计内容包括:
来源字段 - 我们要从您的应用发布,来源名称“来自 ***” 在腾讯微博和其他微博中显示的源链接 - 我们希望来自腾讯微博或其他微博的用户,点击时打开的网页的 URL
查看源字段的提交标准:
创建时间超过15天。接口调用累计超过10000次。用户授权数超过100。
腾讯微博开放平台还提供了一些官方微博应用供开发者学习使用,包括:
一键直播——将一键直播嵌入到您的网站中,访问者可以直接将网页信息传播到腾讯微博。在分享信息的同时,用户可以通过源链接进入你的网站,从而增加流量。微博秀 - 使用微博秀,将生成的代码放在您的博客、网站 或其他支持 html 代码的位置,以向网络访问者展示您在腾讯微博上的最新广播和视频。观众。微博广播站 - 使用微博广播站,将生成的代码放在你的博客、网站或其他支持html代码的位置,不仅可以显示你最近的20条广播,登录腾讯微博后,你还可以直接在这里写微博,让更多的人知道和倾听你。微博签名文件——使用微博签名文件,
对于应用开发者最关心的开发平台API,详细说明见网站:
API 文档 - 提供 API 接口 url、格式、http 请求方法等 Oauth 授权说明 - 介绍 Oauth 认证机制和请求授权方法 API 调用权限 - 说明不同权限的开发者可以调用的 API 范围,以及调用频率通话限制
其中,值得关注的是开放平台对API读写频率的要求:
一级授权
读取请求:每个 API 单用户每小时 150 次(包括获取公共时间线、主页时间线等)
写入请求:不可用中间授权读取请求:每个用户每小时每个 API 150
写请求:每个用户每小时最多100次(包括推文、转播、对话、私信、收听等)腾讯合作伙伴授权的读取请求:每个API单用户每小时5000次
写请求:每个用户每小时最多400次(包括推特、转播、对话、私信、收听等)
如果开发者认为 API 调用次数不够,腾讯对此进行了解释:
首先,微博API技术是一种HTTP轮询(POLLING)协议,而不是通过实时推送获取信息。为了保证用户能够获取到最新的微博信息,需要调用API定时阅读。根据实际微博信息更新统计,建议阅读频率控制在1分钟/次以上,或者通过:
如果用户数量过多,当前对 API 调用频率的限制是不够的。在您的申请数据达到相应标准后,您可以通过电子邮件申请更高级别的通话权限。审核通过后,官方会进行调整。您可以查看应用程序当前的API调用权限级别。
微博应用市场近期火爆。就在几天前,InfoQ 中文站刚刚报道了新浪微博开发者创新基金向微博应用创业者敞开大门:
2亿元规模的中国微博开发者创新基金正式开始接受申请,为国内中小创业公司或个人创业者提供一个施展才华的平台……(基金)旨在专注于新浪微博平台 公司第三方应用开发者提供风险投资,同时为开发者提供必要的创业相关辅导,帮助开发者加速实现创业梦想。基金投资项目的单笔投资金额主要在300万以下,但对较高的投资金额没有限制。应用开发项目要求为:已在新浪微博开放平台申请APP密钥的开发者,
由此可见,随着微博的火爆,互联网企业开始关注这个市场,鼓励第三方开发和部署微博应用。一方面可以增加自己微博的知名度,另一方面可以将自己的微博分享给第三方。博市有望盈利“蛋糕”。无论是腾讯微博开放平台还是新浪微博创新基金,都是微博应用开发者迎来大发展的好机会。InfoQ中文站也将继续关注相关动态。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(腾讯微博开放平台正式上线,为开发者和用户提供开放数据分享与传播平台)
12月16日,腾讯微博开放平台正式上线。基于腾讯微博系统,为开发者和用户提供一个开放的数据共享和传播平台。广大开发者和用户登录平台后,可以利用平台提供的开放API接口创建应用程序,从微博系统中获取信息,或者向整个微博系统传播新的信息。就在几天前,新浪微博创新基金刚刚开始接受申请,主要面向新浪微博应用的创业者。由此可以看出,国内微博应用市场正在逐渐竞争,竞争也越来越激烈。
据腾讯微博开放平台网站介绍,该开放平台基于腾讯微博系统,定位为开放数据共享传播平台。登录平台创建应用后,您可以通过从平台获取的应用App Key和App Secret,使用各种API实现丰富的应用功能。应用依赖用户账号访问其微博账号读写内容,首次使用时需要用户授权,授权系统使用Oauth机制。获得用户授权后,应用可以获取当前用户的用户名、头像图片、当前用户的听众和收听名单等信息,
获得用户账号授权后,可以使用平台提供的API创建以下功能:
快速分享内容到微博。腾讯微博用户关系开放,互动性强。通过用户之间的交互和传播,信息可以呈几何级数传播。传播的内容也会在微博网站上展示,用户点击链接后可以直接进入指定页面,起到为网站吸引流量的作用。基于微博互动建立用户关系。通过向用户展示最新的微博信息,并提供即时收听功能,帮助用户建立互动关系。平台提供的微博秀应用程序让您只需几行 HTML 代码,即可在 网站 上显示您的新微博更新。获取微博信息作为内容。您可以获取整个微博平台的最新微博信息,或者指定用户发布/收听的微博信息,并作为内容展示在您的网站/软件中。腾讯微博有很多名人和专业人士活跃,最新最真实的新闻可以作为内容。
开发者构建微博应用后,可以将应用源字段提交给腾讯审核。申请提交审核通过后,申请发送的微博信息将在腾讯微博等应用中显示,并附有申请的来源字段和来源URL信息。当用户点击时,会打开网站,为网站带来流量。
源字段的审计内容包括:
来源字段 - 我们要从您的应用发布,来源名称“来自 ***” 在腾讯微博和其他微博中显示的源链接 - 我们希望来自腾讯微博或其他微博的用户,点击时打开的网页的 URL
查看源字段的提交标准:
创建时间超过15天。接口调用累计超过10000次。用户授权数超过100。
腾讯微博开放平台还提供了一些官方微博应用供开发者学习使用,包括:
一键直播——将一键直播嵌入到您的网站中,访问者可以直接将网页信息传播到腾讯微博。在分享信息的同时,用户可以通过源链接进入你的网站,从而增加流量。微博秀 - 使用微博秀,将生成的代码放在您的博客、网站 或其他支持 html 代码的位置,以向网络访问者展示您在腾讯微博上的最新广播和视频。观众。微博广播站 - 使用微博广播站,将生成的代码放在你的博客、网站或其他支持html代码的位置,不仅可以显示你最近的20条广播,登录腾讯微博后,你还可以直接在这里写微博,让更多的人知道和倾听你。微博签名文件——使用微博签名文件,
对于应用开发者最关心的开发平台API,详细说明见网站:
API 文档 - 提供 API 接口 url、格式、http 请求方法等 Oauth 授权说明 - 介绍 Oauth 认证机制和请求授权方法 API 调用权限 - 说明不同权限的开发者可以调用的 API 范围,以及调用频率通话限制
其中,值得关注的是开放平台对API读写频率的要求:
一级授权
读取请求:每个 API 单用户每小时 150 次(包括获取公共时间线、主页时间线等)
写入请求:不可用中间授权读取请求:每个用户每小时每个 API 150
写请求:每个用户每小时最多100次(包括推文、转播、对话、私信、收听等)腾讯合作伙伴授权的读取请求:每个API单用户每小时5000次
写请求:每个用户每小时最多400次(包括推特、转播、对话、私信、收听等)
如果开发者认为 API 调用次数不够,腾讯对此进行了解释:
首先,微博API技术是一种HTTP轮询(POLLING)协议,而不是通过实时推送获取信息。为了保证用户能够获取到最新的微博信息,需要调用API定时阅读。根据实际微博信息更新统计,建议阅读频率控制在1分钟/次以上,或者通过:
如果用户数量过多,当前对 API 调用频率的限制是不够的。在您的申请数据达到相应标准后,您可以通过电子邮件申请更高级别的通话权限。审核通过后,官方会进行调整。您可以查看应用程序当前的API调用权限级别。
微博应用市场近期火爆。就在几天前,InfoQ 中文站刚刚报道了新浪微博开发者创新基金向微博应用创业者敞开大门:
2亿元规模的中国微博开发者创新基金正式开始接受申请,为国内中小创业公司或个人创业者提供一个施展才华的平台……(基金)旨在专注于新浪微博平台 公司第三方应用开发者提供风险投资,同时为开发者提供必要的创业相关辅导,帮助开发者加速实现创业梦想。基金投资项目的单笔投资金额主要在300万以下,但对较高的投资金额没有限制。应用开发项目要求为:已在新浪微博开放平台申请APP密钥的开发者,
由此可见,随着微博的火爆,互联网企业开始关注这个市场,鼓励第三方开发和部署微博应用。一方面可以增加自己微博的知名度,另一方面可以将自己的微博分享给第三方。博市有望盈利“蛋糕”。无论是腾讯微博开放平台还是新浪微博创新基金,都是微博应用开发者迎来大发展的好机会。InfoQ中文站也将继续关注相关动态。
使用新浪微博开放平台api同步微博内容至自己网站(修改SDK包里面Weibo.java类的App和AppSecret)
网站优化 • 优采云 发表了文章 • 0 个评论 • 64 次浏览 • 2022-04-05 08:22
使用新浪微博开放平台的API,首先要获取新浪分配的App key和App Secret。以下是我创建应用后sina分配的App key和App Secret(这个要保密)。
然后下载微博SDK,我用Java的weibo4j。目前提供以下语言版本:
将SDK包中Weibo.java类的App Key和App Secret修改为刚刚获取的App Key和App Secret,如下图所示:
完成后,就可以根据提供的Demo开始编写代码了。如下:
WebOAuth.java用于初始化Weibo.java类所需的App Key和App Secret,并提供getRequestToken()和gettAccessToken()方法获取Request Token和Access Token。所需的参数显示在代码中。此外,还提供了一个发布文本微博的方法update()。
<p>package weibo4j.examples;
import weibo4j.Status;
import weibo4j.Weibo;
import weibo4j.WeiboException;
import weibo4j.http.AccessToken;
import weibo4j.http.RequestToken;
import java.io.UnsupportedEncodingException;
// Web 方式认证
public class WebOAuth {
private Weibo weibo;
public WebOAuth(){
// 准备好Consumer Key、Consumer Secret
// 对应于新浪微博应用就是申请到的 App key 和 Secret key
System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY);
System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET);
weibo = new Weibo();
}
// 根据传入的 callback_url 获取 request token
public RequestToken getRequestToken(String backUrl) {
try {
// 指定 callback_url 并获得 request token
RequestToken requestToken = weibo.getOAuthRequestToken(backUrl);
System.out.println("Request token: " + requestToken.getToken());
System.out.println("Request token secret: " + requestToken.getTokenSecret());
return requestToken;
} catch (Exception e) {
System.out.println("获取Request token发生异常!");
e.printStackTrace();
return null;
}
}
// 根据传入的 request token 和 verifier 获取 access token
public AccessToken gettAccessToken(RequestToken requestToken, String verifier) {
try {
AccessToken accessToken = weibo.getOAuthAccessToken(requestToken
.getToken(), requestToken.getTokenSecret(), verifier);
System.out.println("Access token: " + accessToken.getToken());
System.out.println("Access token secret: " + accessToken.getTokenSecret());
return accessToken;
} catch (Exception e) {
System.out.println("获取Access token发生异常!");
e.printStackTrace();
return null;
}
}
// 根据传入的 Access Token 和内容发表微博
public void update(AccessToken access, String content) {
try {
weibo.setToken(access.getToken(), access.getTokenSecret());
content = new String(content.getBytes("GBK"), "UTF-8");
Status status = weibo.updateStatus(content);
System.out.println("成功发表微博:" + status.getText() + ".");
} catch (UnsupportedEncodingException e) {
System.out.println("微博内容转编码发生异常!");
e.printStackTrace();
} catch (WeiboException e) {
System.out.println("发表微博发生异常!");
e.printStackTrace();
}
}
}
</p>
request.jsp,用于提供callback_url(这里我们自定义为下面的callback.jsp),获取RequestToken后,将RequestToken保存在Session中,并将页面重定向到callback.jsp进行验证,授权。
<p>
请点击进行Web方式的OAuth认证!</a>
</p>
callback.jsp,在上一步重定向后,会在callback_url后面附加oauth_verifier参数。这时候我们根据Session中保存的RequestToken和获取到的oauth_verifier参数申请AccessToken。获取到AccessToken后,我们将页面重定向到writeWeibo.html,即写微博的页面。
<p>
</p>
writeWeibo.html,一个很简单的HTML文件。
<p>
发布sina微博
请在这里写上140字符以内的文本:</br>
测试新浪微博!</br>
</br>
</p>
<p>
</p>
在运行之前,我们需要准备好Tomcat,并将上述源文件放到正确的目录下。另外SDK包中收录的commons-httpclient-3.1.jar包也要加到\WEB-INF\lib目录下,还有我编译打包的weibo4j.jar (里面是新浪微博开放平台的具体Java实现)。
运行Tomcat,在浏览器中访问request.jsp页面,如下图:
点击链接,如下图(注意地址栏的变化):
地址栏中的网址如下:
://localhost:8080/sinaweibo/callback.jsp
填写具体有效的新浪微博账号、密码和授权。以下是我用于测试和授权的微博账号填写的结果:
地址栏中的网址如下:
:8080/sinaweibo/writeWeibo.html
点击“发布”,如下图:
登录微博查看,如下图:
查看此帐号授权的应用列表:
到此为止,关于使用新浪微博开放平台发布微博的OAuth方式大概就是这个过程了。
总结:
1、其实还有很多细节没办法讲。我也试了很多次,一点点找到问题,明白问题,然后解决问题;
2、如果我们登录新浪微博的账号信息cookie已经保存在浏览器中,那么授权时就不需要输入账号信息了,当然也可以不修改用于授权的当前账户;
3、还有一些信息是在控制台输入的,比如Token、URL、服务器返回信息,截图中没有给出。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(修改SDK包里面Weibo.java类的App和AppSecret)
使用新浪微博开放平台的API,首先要获取新浪分配的App key和App Secret。以下是我创建应用后sina分配的App key和App Secret(这个要保密)。

然后下载微博SDK,我用Java的weibo4j。目前提供以下语言版本:

将SDK包中Weibo.java类的App Key和App Secret修改为刚刚获取的App Key和App Secret,如下图所示:

完成后,就可以根据提供的Demo开始编写代码了。如下:
WebOAuth.java用于初始化Weibo.java类所需的App Key和App Secret,并提供getRequestToken()和gettAccessToken()方法获取Request Token和Access Token。所需的参数显示在代码中。此外,还提供了一个发布文本微博的方法update()。
<p>package weibo4j.examples;
import weibo4j.Status;
import weibo4j.Weibo;
import weibo4j.WeiboException;
import weibo4j.http.AccessToken;
import weibo4j.http.RequestToken;
import java.io.UnsupportedEncodingException;
// Web 方式认证
public class WebOAuth {
private Weibo weibo;
public WebOAuth(){
// 准备好Consumer Key、Consumer Secret
// 对应于新浪微博应用就是申请到的 App key 和 Secret key
System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY);
System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET);
weibo = new Weibo();
}
// 根据传入的 callback_url 获取 request token
public RequestToken getRequestToken(String backUrl) {
try {
// 指定 callback_url 并获得 request token
RequestToken requestToken = weibo.getOAuthRequestToken(backUrl);
System.out.println("Request token: " + requestToken.getToken());
System.out.println("Request token secret: " + requestToken.getTokenSecret());
return requestToken;
} catch (Exception e) {
System.out.println("获取Request token发生异常!");
e.printStackTrace();
return null;
}
}
// 根据传入的 request token 和 verifier 获取 access token
public AccessToken gettAccessToken(RequestToken requestToken, String verifier) {
try {
AccessToken accessToken = weibo.getOAuthAccessToken(requestToken
.getToken(), requestToken.getTokenSecret(), verifier);
System.out.println("Access token: " + accessToken.getToken());
System.out.println("Access token secret: " + accessToken.getTokenSecret());
return accessToken;
} catch (Exception e) {
System.out.println("获取Access token发生异常!");
e.printStackTrace();
return null;
}
}
// 根据传入的 Access Token 和内容发表微博
public void update(AccessToken access, String content) {
try {
weibo.setToken(access.getToken(), access.getTokenSecret());
content = new String(content.getBytes("GBK"), "UTF-8");
Status status = weibo.updateStatus(content);
System.out.println("成功发表微博:" + status.getText() + ".");
} catch (UnsupportedEncodingException e) {
System.out.println("微博内容转编码发生异常!");
e.printStackTrace();
} catch (WeiboException e) {
System.out.println("发表微博发生异常!");
e.printStackTrace();
}
}
}
</p>
request.jsp,用于提供callback_url(这里我们自定义为下面的callback.jsp),获取RequestToken后,将RequestToken保存在Session中,并将页面重定向到callback.jsp进行验证,授权。
<p>
请点击进行Web方式的OAuth认证!</a>
</p>
callback.jsp,在上一步重定向后,会在callback_url后面附加oauth_verifier参数。这时候我们根据Session中保存的RequestToken和获取到的oauth_verifier参数申请AccessToken。获取到AccessToken后,我们将页面重定向到writeWeibo.html,即写微博的页面。
<p>
</p>
writeWeibo.html,一个很简单的HTML文件。
<p>
发布sina微博
请在这里写上140字符以内的文本:</br>
测试新浪微博!</br>
</br>
</p>
<p>
</p>
在运行之前,我们需要准备好Tomcat,并将上述源文件放到正确的目录下。另外SDK包中收录的commons-httpclient-3.1.jar包也要加到\WEB-INF\lib目录下,还有我编译打包的weibo4j.jar (里面是新浪微博开放平台的具体Java实现)。
运行Tomcat,在浏览器中访问request.jsp页面,如下图:

点击链接,如下图(注意地址栏的变化):

地址栏中的网址如下:
://localhost:8080/sinaweibo/callback.jsp
填写具体有效的新浪微博账号、密码和授权。以下是我用于测试和授权的微博账号填写的结果:

地址栏中的网址如下:
:8080/sinaweibo/writeWeibo.html
点击“发布”,如下图:

登录微博查看,如下图:

查看此帐号授权的应用列表:

到此为止,关于使用新浪微博开放平台发布微博的OAuth方式大概就是这个过程了。
总结:
1、其实还有很多细节没办法讲。我也试了很多次,一点点找到问题,明白问题,然后解决问题;
2、如果我们登录新浪微博的账号信息cookie已经保存在浏览器中,那么授权时就不需要输入账号信息了,当然也可以不修改用于授权的当前账户;
3、还有一些信息是在控制台输入的,比如Token、URL、服务器返回信息,截图中没有给出。
使用新浪微博开放平台api同步微博内容至自己网站(基于新浪微博的移动电子商务系统Android客户端软件应运而生软件)
网站优化 • 优采云 发表了文章 • 0 个评论 • 37 次浏览 • 2022-04-05 08:19
基于新浪微博的移动电子商务系统
Android是基于Linux内核的操作系统。以其独有的开放性,广泛应用于智能手机等智能终端,并迅速发展成为市场占有率最大的移动操作系统。电子商务近年来发展迅速,通过互联网进行交易已成为一种趋势。移动电子商务作为智能移动终端与电子商务的结合,具有巨大的发展潜力。微博是微博的简称,是一个基于用户关系的信息共享、传播和获取平台。用户以文字形式更新信息,实现即时分享。微博的开放性和即时性使其成为增长最快的互联网业务。所以,借助微博平台推动移动电子商务的发展具有巨大的市场价值,但目前市场上还没有基于微博平台的移动电子商务软件。在此背景下,基于微博的移动电子商务系统安卓客户端软件应运而生。由于新浪微博是中国最受欢迎的微博平台,本系统以新浪微博为开发平台。新浪微博安卓平台SDK(软件开发工具包)为第三方微博应用提供简单易用的微博API调用服务,让第三方客户端无需了解复杂的验证和API(应用程序编程接口)调用流程。并且可以实现分享到微博的功能,可以将文字,或者多媒体信息分享到内置的分享页面,
该 SDK 封装了 HTTP 请求和 Json 信息的解析。我们只需要实现页面相关功能的开发,大大减轻了程序员的开发压力。本文所讨论的系统开发的核心内容是基于Android平台,结合新浪微博API实现基于微博的移动电子商务系统Android客户端软件。本文介绍了移动电子商务、Android开发平台和微博开发平台的相关技术,分析了目前国内外电子商务、Android移动平台和微博系统的应用,设计了一个基于Android的移动电子商务系统。在新浪微博客户端软件实现了登录注册模块、商家信息模块、微博编辑模块、采集模块、个人信息模块、二维码模块、天气查询模块。最终,该系统使用户无需刻意找时间在线搜索产品。用户只要拥有一部安卓手机,就可以随时随地浏览商家促销信息。不仅解放了时间和空间的限制,还让用户可以更有效地利用时间,可以利用公交车、地铁等多条等待时间获取商业信息。完成基于微博的电子商务系统安卓客户端软件基本功能开发。目前,该软件可以正常运行。大大节省了人们挑选物品的时间,加快了商品的流通,
立即下载 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(基于新浪微博的移动电子商务系统Android客户端软件应运而生软件)
基于新浪微博的移动电子商务系统
Android是基于Linux内核的操作系统。以其独有的开放性,广泛应用于智能手机等智能终端,并迅速发展成为市场占有率最大的移动操作系统。电子商务近年来发展迅速,通过互联网进行交易已成为一种趋势。移动电子商务作为智能移动终端与电子商务的结合,具有巨大的发展潜力。微博是微博的简称,是一个基于用户关系的信息共享、传播和获取平台。用户以文字形式更新信息,实现即时分享。微博的开放性和即时性使其成为增长最快的互联网业务。所以,借助微博平台推动移动电子商务的发展具有巨大的市场价值,但目前市场上还没有基于微博平台的移动电子商务软件。在此背景下,基于微博的移动电子商务系统安卓客户端软件应运而生。由于新浪微博是中国最受欢迎的微博平台,本系统以新浪微博为开发平台。新浪微博安卓平台SDK(软件开发工具包)为第三方微博应用提供简单易用的微博API调用服务,让第三方客户端无需了解复杂的验证和API(应用程序编程接口)调用流程。并且可以实现分享到微博的功能,可以将文字,或者多媒体信息分享到内置的分享页面,
该 SDK 封装了 HTTP 请求和 Json 信息的解析。我们只需要实现页面相关功能的开发,大大减轻了程序员的开发压力。本文所讨论的系统开发的核心内容是基于Android平台,结合新浪微博API实现基于微博的移动电子商务系统Android客户端软件。本文介绍了移动电子商务、Android开发平台和微博开发平台的相关技术,分析了目前国内外电子商务、Android移动平台和微博系统的应用,设计了一个基于Android的移动电子商务系统。在新浪微博客户端软件实现了登录注册模块、商家信息模块、微博编辑模块、采集模块、个人信息模块、二维码模块、天气查询模块。最终,该系统使用户无需刻意找时间在线搜索产品。用户只要拥有一部安卓手机,就可以随时随地浏览商家促销信息。不仅解放了时间和空间的限制,还让用户可以更有效地利用时间,可以利用公交车、地铁等多条等待时间获取商业信息。完成基于微博的电子商务系统安卓客户端软件基本功能开发。目前,该软件可以正常运行。大大节省了人们挑选物品的时间,加快了商品的流通,
立即下载
使用新浪微博开放平台api同步微博内容至自己网站(调用微博开放平台API开发自己的微博应用,第一步学**一)
网站优化 • 优采云 发表了文章 • 0 个评论 • 66 次浏览 • 2022-04-03 07:14
新浪微博开放平台API使用研究。docxOAuth和新浪微博开放平台介绍。在新浪微博上创建应用程序之前,我获得了Appkey 和Secretkey 来调用新浪微博开放平台APT Learning****1 • 这到底是怎么回事。前几天,我连续4天没课,所以我很耐心地想知道如何使用APIo。新浪微博开放平台虽然提供了多种语言的开发SDK下载,但也收录了一些基本接口调用的demo和接口说明。文档。但是经过几天的耐心尝试,感觉新浪微博开放平台上的入门指南与下载的Java开发包weibodj包中的Demo使用注释有些不一致。再加上他们理解能力有限,他们遇到了很多困难的问题。幸运的是,我没有放弃尝试理解它。废话不多说,接下来就是我的学习过程了。如果你想通过调用新浪微博开放平台API来开发自己的微博应用,第一步是要有一个siw微博账号和一个CSDN账号,因为我们需要同时用这两个账号创建一个微博应用,从而获得Appkey和CSDN账号。密钥。那么Appkey和Secretkey有什么用呢?其实我只是看了simena微博开放平台上的一系列说明,对Appkey和Secretkey的使用并不是很了解。因为了解OAuth认证和授权的全过程比较重要,
当我第一次遇到完全没有概念的OAuth时,我认为没有戏剧就不可能学习****。幸运的是,我找到了下面的文章,对理解OAuth很有帮助。链接如下: OAUTH协议介绍 ***应用中用到了“科鼎OAuth安全协议”的Java应用编程丨|〔奔奔I》OAuth在OAuth中有3个参与者,即User>ServiceProviderConsumer □假设我想基于新浪微博开放平台开发一个应用(App),供其他新浪微博用户使用,它们的对应关系如下: User=>想要使用这个应用的新浪微博用户 Provider=>新浪微博开放平台Consumer=>App 其实我们的App相当于User和PtovideT(新浪微博平台)。第三方应用程序。作为第三方App,要想访问用户存储在新浪微博平台上的资源,必须经过一系列的认证和授权后才能工作。下面是根据我对整个OAuth认证授权过程的理解绘制的图(可以跳过,对以下概念有一定了解后再看流程图): 8:引导用户Callback_URL()+OAuthToken&Verifier7:Authorize Consumer()/2:返回ConsumerKey&Secret()\5:返回RequstToken&Secret()0:essToken&Secret()分散请求RequstToken()9:essTyLen()\\^:Registration()■-+RequestToken +CallbackURL , 提供者+RequstToken&SecretConsumer6:; 引导用户进入认证页面(7ll:essToken访问用户'
Consumer 向 Provider 申请,希望调用其开放的 API。申请通过后,Provider将其分配给符合其要求的Consumer。JTJ 是唯一的,用于标识满足提供者要求的消费者。对应上图中的流程1和流程2。RequestToken、RequestSecret:当User访问Consumer,想要获取其特殊服务时,该服务由Consumer整合存储在Provider中的User自身资源后返回。在这种情况下,Consumer 向 Provider 请求获取一个 RequestToken,用于唯一标识 Consumer 和 User 之间的具体关联。对应上图中的进程3、4、5。在过程 6 中,Consumer 必须将 User 引导至 Provider 提供的 OAuth 认证授权页面。实际上,浏览器被重定向到附加了 RequestToken 和 RequestSecret 参数的 authenticationURL。此 URL 由 Provider 提供。接下来,在流程 7 和流程 8 中,User 对 Consumer 进行授权(通常是通过输入账号和密码进行登录),Provider 将重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL参数。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 浏览器被重定向到附加了 RequestToken 和 RequestSecret 参数的 authenticationURL。此 URL 由 Provider 提供。接下来,在流程 7 和流程 8 中,User 对 Consumer 进行授权(通常是通过输入账号和密码进行登录),Provider 将重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL参数。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 浏览器被重定向到附加了 RequestToken 和 RequestSecret 参数的 authenticationURL。此 URL 由 Provider 提供。接下来,在流程 7 和流程 8 中,User 对 Consumer 进行授权(通常是通过输入账号和密码进行登录),Provider 将重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL参数。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 Provider 会重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL 参数中。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 Provider 会重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL 参数中。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(调用微博开放平台API开发自己的微博应用,第一步学**一)
新浪微博开放平台API使用研究。docxOAuth和新浪微博开放平台介绍。在新浪微博上创建应用程序之前,我获得了Appkey 和Secretkey 来调用新浪微博开放平台APT Learning****1 • 这到底是怎么回事。前几天,我连续4天没课,所以我很耐心地想知道如何使用APIo。新浪微博开放平台虽然提供了多种语言的开发SDK下载,但也收录了一些基本接口调用的demo和接口说明。文档。但是经过几天的耐心尝试,感觉新浪微博开放平台上的入门指南与下载的Java开发包weibodj包中的Demo使用注释有些不一致。再加上他们理解能力有限,他们遇到了很多困难的问题。幸运的是,我没有放弃尝试理解它。废话不多说,接下来就是我的学习过程了。如果你想通过调用新浪微博开放平台API来开发自己的微博应用,第一步是要有一个siw微博账号和一个CSDN账号,因为我们需要同时用这两个账号创建一个微博应用,从而获得Appkey和CSDN账号。密钥。那么Appkey和Secretkey有什么用呢?其实我只是看了simena微博开放平台上的一系列说明,对Appkey和Secretkey的使用并不是很了解。因为了解OAuth认证和授权的全过程比较重要,
当我第一次遇到完全没有概念的OAuth时,我认为没有戏剧就不可能学习****。幸运的是,我找到了下面的文章,对理解OAuth很有帮助。链接如下: OAUTH协议介绍 ***应用中用到了“科鼎OAuth安全协议”的Java应用编程丨|〔奔奔I》OAuth在OAuth中有3个参与者,即User>ServiceProviderConsumer □假设我想基于新浪微博开放平台开发一个应用(App),供其他新浪微博用户使用,它们的对应关系如下: User=>想要使用这个应用的新浪微博用户 Provider=>新浪微博开放平台Consumer=>App 其实我们的App相当于User和PtovideT(新浪微博平台)。第三方应用程序。作为第三方App,要想访问用户存储在新浪微博平台上的资源,必须经过一系列的认证和授权后才能工作。下面是根据我对整个OAuth认证授权过程的理解绘制的图(可以跳过,对以下概念有一定了解后再看流程图): 8:引导用户Callback_URL()+OAuthToken&Verifier7:Authorize Consumer()/2:返回ConsumerKey&Secret()\5:返回RequstToken&Secret()0:essToken&Secret()分散请求RequstToken()9:essTyLen()\\^:Registration()■-+RequestToken +CallbackURL , 提供者+RequstToken&SecretConsumer6:; 引导用户进入认证页面(7ll:essToken访问用户'
Consumer 向 Provider 申请,希望调用其开放的 API。申请通过后,Provider将其分配给符合其要求的Consumer。JTJ 是唯一的,用于标识满足提供者要求的消费者。对应上图中的流程1和流程2。RequestToken、RequestSecret:当User访问Consumer,想要获取其特殊服务时,该服务由Consumer整合存储在Provider中的User自身资源后返回。在这种情况下,Consumer 向 Provider 请求获取一个 RequestToken,用于唯一标识 Consumer 和 User 之间的具体关联。对应上图中的进程3、4、5。在过程 6 中,Consumer 必须将 User 引导至 Provider 提供的 OAuth 认证授权页面。实际上,浏览器被重定向到附加了 RequestToken 和 RequestSecret 参数的 authenticationURL。此 URL 由 Provider 提供。接下来,在流程 7 和流程 8 中,User 对 Consumer 进行授权(通常是通过输入账号和密码进行登录),Provider 将重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL参数。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 浏览器被重定向到附加了 RequestToken 和 RequestSecret 参数的 authenticationURL。此 URL 由 Provider 提供。接下来,在流程 7 和流程 8 中,User 对 Consumer 进行授权(通常是通过输入账号和密码进行登录),Provider 将重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL参数。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 浏览器被重定向到附加了 RequestToken 和 RequestSecret 参数的 authenticationURL。此 URL 由 Provider 提供。接下来,在流程 7 和流程 8 中,User 对 Consumer 进行授权(通常是通过输入账号和密码进行登录),Provider 将重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL参数。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 Provider 会重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL 参数中。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问 Provider 会重定向到流程 1 中 Consumer 提供的 Callback_URL,并将 OAuthToken 和 OAuthVerifier 附加到 URL 参数中。. essToken。AccessToken,AccessSecret:essToken,用于唯一标识一个特定的Consumer,该Consumer可以访问一个User存储在Provider中的资源和信息。essSecret 访问
使用新浪微博开放平台api同步微博内容至自己网站(新浪微博开放平台做个实践,开发一个功能简单的android客户端)
网站优化 • 优采云 发表了文章 • 0 个评论 • 317 次浏览 • 2022-04-02 00:12
介绍
最近不太忙,花点时间学习android app开发。经过两周的学习,我在学习的同时也写了很多demo例子,可以从基本控件和基本动画效果的demo合集中放出,不断更新下载。
从这周开始,我打算以新浪微博开放平台为实践,开发一个功能简单的安卓客户端,尽可能的完善功能。
今天的内容
上图是这个客户端的主界面。目前只获取前20条数据。您也可以单击刷新来刷新数据。功能比较简单。
操作系统是android2.2.
用到的技术点包括ListView、自定义ListAdapter、多线程相关Message、Handler、认证相关OAuth、异步加载用户图片等。
新浪微博的验证使用signpost的OAuth组件,不使用微博的SDK。
源代码下载:
关于 OAuth 身份验证
OAuth是目前比较流行的一种授权方案。twitter、facebook、google等大型开放平台均支持oauth认证方式,国内新浪微博、腾讯微博、163微博等开放平台也已支持。这种验证模式。
来自维基百科的引文
“oauth 是一种开放标准,允许用户允许第三方应用程序访问用户放置在 网站 上的私有资源,而无需将用户名和密码传递给第三方应用程序。oauth 允许用户提供一个令牌,而不是用户名和密码来访问他们存储在特定服务提供商处的数据。”
例如:
用户A在服务提供者B上存储了一些资源。B支持oauth授权方式。A 是 B 上的注册用户,拥有用户名和密码。使用用户名和密码登录B可以查看自己的资源。假设有一个应用程序C,当用户A使用C时,他需要自己存储在B上的资源。有两种方法可以在 C 上实现资源以在 B 上显示自身。
这时C就可以使用B开启的oauth授权机制,当用户A想在B上展示资源时,C会跳转到B的验证页面,用户在B的页面输入用户名和密码。通过后,会询问用户是否为C应用开发相关资源。用户可以自定义C可以访问的资源,然后跳转回C应用。这样,您就不必担心用户名和密码,也不必同时存储多个资源。
您可以通过以下网站了解更多关于oauth的具体技术细节。
从上图中我们可以看出,整个流程分为消费者和提供者两部分。消费者是示例中的 C 应用程序,提供者是示例中的 B 服务提供者。
使用 OAuth 进行认证和授权的流程如下:
用户访问客户端的网站,想要操作存储在服务提供者中的用户资源。客户端向服务提供者请求一个临时令牌。服务提供者对客户端进行身份验证后,将授予一个临时令牌。客户端获取临时token后,将用户引导至服务提供者的授权页面,请求用户授权。在这个过程中,临时令牌和客户端的回调连接被发送给服务提供者。用户在服务提供商的网页上输入用户名和密码,然后授权客户端访问所请求的资源。授权成功后,服务商引导用户返回客户端的网页。客户端根据临时令牌从服务提供者处获取访问令牌。服务提供者根据临时令牌和用户授权授予客户端访问令牌。客户端使用获得的访问令牌来访问托管在服务提供商上的受保护资源。
新浪微博的誓言
借用一张新浪微博oauth验证流程图。
当我们在新浪微博开放平台上创建一个新的应用程序时,我们会给新的应用程序分配一个key和secret,即consumerKey和consumerSecret。通过这两件事,我们去request_token,然后将用户重定向到新浪微博平台的授权页面。授权后,我们会根据callback_url跳转到我们应用的某个地址。我们再次使用request_token来获取access_token,然后我们需要通过access token来访问需要验证的开放平台提供的接口。
当然,那些不需要验证就可以访问的接口,可以直接使用key进行访问。具体请参考开放平台提供的API文档。
腾讯微博和163微博的开放平台在原理和实现上也类似。
packagecom.sinaweibo2;
importoauth.signpost.OAuthConsumer;
importoauth.signpost.OAuthProvider;
monshttp.CommonsHttpOAuthConsumer;
monshttp.CommonsHttpOAuthProvider;
importoauth.signpost.exception.OAuthCommunicationException;
importoauth.signpost.exception.OAuthExpectationFailedException;
importoauth.signpost.exception.OAuthMessageSignerException;
importoauth.signpost.exception.OAuthNotAuthorizedException;
公共类OAuth {
privateOAuthConsumer mConsumer;
私有OAuthProvider mProvider;
publicstaticfinalString CALLBACK_URL="sinaweibo2://WeiboListActivity";
publicstaticfinalString CONSUMER_KEY="1849239616";
publicstaticfinalString CONSUMER_SECRET="b2137bf782bf6cae004b8a8394d5d5d6";
publicstaticfinalString REQUEST_TOKEN_URL = "";
publicstaticfinalString ACCESS_TOKEN_URL = "";
publicstaticfinalString AUTHORIZE_URL = "";
公共OAuth(){
}
publicString RetrieveAuthUrl() throwsOAuthMessageSignerException,
OAuthNotAuthorizedException、OAuthExpectationFailedException、
OAuthCommunicationException {
mConsumer =newCommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
mProvider =newCommonsHttpOAuthProvider(REQUEST_TOKEN_URL,
ACCESS_TOKEN_URL, AUTHORIZE_URL);
String authUrl= mProvider.retrieveRequestToken(mConsumer, CALLBACK_URL);
returnauthUrl;
}
publicvoidRetrieveAccessToken(字符串验证器)
throwsOAuthMessageSignerException、OAuthNotAuthorizedException、
OAuthExpectationFailedException, OAuthCommunicationException {
mProvider.setOAuth10a(true);
mProvider.retrieveAccessToken(mConsumer, 验证者);
OAuthUser.USER_ID=mProvider.getResponseParameters().getFirst("user_id");
OAuthUser.ACCESS_TOKEN = mConsumer.getToken();
OAuthUser.ACCESS_TOKEN_SECRET = mConsumer.getTokenSecret();
}
}
更多功能
接下来主要完善两个功能,一是分页浏览,二是发布微博。
未来可能支持图片发布等实用功能。
有UI美化,性能优化。
总结
在学习的过程中,我看了两本书,Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527). pdf,都是很不错的入门书,书我没有看完,但是看了大部分,边看边写demo。
同时,论坛是eoe天天的开发者门户。回答问题、解决问题、提问、发帖,总之就是锻炼自己,强迫自己锻炼基础和思考。
论坛上有很多中文的pdf教程,但是我发现大部分都是android开发者中心的Dev Guide和Resources中的内容的翻译。所以我觉得,如果英文不是很差,建议直接看上面两节,同时练习里面的例子。保证在两周内,你会取得很大的进步。
参考
Technorati 标签:android, 开放平台, oauth, 新浪微博 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(新浪微博开放平台做个实践,开发一个功能简单的android客户端)
介绍
最近不太忙,花点时间学习android app开发。经过两周的学习,我在学习的同时也写了很多demo例子,可以从基本控件和基本动画效果的demo合集中放出,不断更新下载。
从这周开始,我打算以新浪微博开放平台为实践,开发一个功能简单的安卓客户端,尽可能的完善功能。
今天的内容

上图是这个客户端的主界面。目前只获取前20条数据。您也可以单击刷新来刷新数据。功能比较简单。
操作系统是android2.2.
用到的技术点包括ListView、自定义ListAdapter、多线程相关Message、Handler、认证相关OAuth、异步加载用户图片等。
新浪微博的验证使用signpost的OAuth组件,不使用微博的SDK。

源代码下载:
关于 OAuth 身份验证
OAuth是目前比较流行的一种授权方案。twitter、facebook、google等大型开放平台均支持oauth认证方式,国内新浪微博、腾讯微博、163微博等开放平台也已支持。这种验证模式。
来自维基百科的引文
“oauth 是一种开放标准,允许用户允许第三方应用程序访问用户放置在 网站 上的私有资源,而无需将用户名和密码传递给第三方应用程序。oauth 允许用户提供一个令牌,而不是用户名和密码来访问他们存储在特定服务提供商处的数据。”
例如:
用户A在服务提供者B上存储了一些资源。B支持oauth授权方式。A 是 B 上的注册用户,拥有用户名和密码。使用用户名和密码登录B可以查看自己的资源。假设有一个应用程序C,当用户A使用C时,他需要自己存储在B上的资源。有两种方法可以在 C 上实现资源以在 B 上显示自身。
这时C就可以使用B开启的oauth授权机制,当用户A想在B上展示资源时,C会跳转到B的验证页面,用户在B的页面输入用户名和密码。通过后,会询问用户是否为C应用开发相关资源。用户可以自定义C可以访问的资源,然后跳转回C应用。这样,您就不必担心用户名和密码,也不必同时存储多个资源。
您可以通过以下网站了解更多关于oauth的具体技术细节。

从上图中我们可以看出,整个流程分为消费者和提供者两部分。消费者是示例中的 C 应用程序,提供者是示例中的 B 服务提供者。
使用 OAuth 进行认证和授权的流程如下:
用户访问客户端的网站,想要操作存储在服务提供者中的用户资源。客户端向服务提供者请求一个临时令牌。服务提供者对客户端进行身份验证后,将授予一个临时令牌。客户端获取临时token后,将用户引导至服务提供者的授权页面,请求用户授权。在这个过程中,临时令牌和客户端的回调连接被发送给服务提供者。用户在服务提供商的网页上输入用户名和密码,然后授权客户端访问所请求的资源。授权成功后,服务商引导用户返回客户端的网页。客户端根据临时令牌从服务提供者处获取访问令牌。服务提供者根据临时令牌和用户授权授予客户端访问令牌。客户端使用获得的访问令牌来访问托管在服务提供商上的受保护资源。
新浪微博的誓言

借用一张新浪微博oauth验证流程图。
当我们在新浪微博开放平台上创建一个新的应用程序时,我们会给新的应用程序分配一个key和secret,即consumerKey和consumerSecret。通过这两件事,我们去request_token,然后将用户重定向到新浪微博平台的授权页面。授权后,我们会根据callback_url跳转到我们应用的某个地址。我们再次使用request_token来获取access_token,然后我们需要通过access token来访问需要验证的开放平台提供的接口。
当然,那些不需要验证就可以访问的接口,可以直接使用key进行访问。具体请参考开放平台提供的API文档。
腾讯微博和163微博的开放平台在原理和实现上也类似。
packagecom.sinaweibo2;
importoauth.signpost.OAuthConsumer;
importoauth.signpost.OAuthProvider;
monshttp.CommonsHttpOAuthConsumer;
monshttp.CommonsHttpOAuthProvider;
importoauth.signpost.exception.OAuthCommunicationException;
importoauth.signpost.exception.OAuthExpectationFailedException;
importoauth.signpost.exception.OAuthMessageSignerException;
importoauth.signpost.exception.OAuthNotAuthorizedException;
公共类OAuth {
privateOAuthConsumer mConsumer;
私有OAuthProvider mProvider;
publicstaticfinalString CALLBACK_URL="sinaweibo2://WeiboListActivity";
publicstaticfinalString CONSUMER_KEY="1849239616";
publicstaticfinalString CONSUMER_SECRET="b2137bf782bf6cae004b8a8394d5d5d6";
publicstaticfinalString REQUEST_TOKEN_URL = "";
publicstaticfinalString ACCESS_TOKEN_URL = "";
publicstaticfinalString AUTHORIZE_URL = "";
公共OAuth(){
}
publicString RetrieveAuthUrl() throwsOAuthMessageSignerException,
OAuthNotAuthorizedException、OAuthExpectationFailedException、
OAuthCommunicationException {
mConsumer =newCommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
mProvider =newCommonsHttpOAuthProvider(REQUEST_TOKEN_URL,
ACCESS_TOKEN_URL, AUTHORIZE_URL);
String authUrl= mProvider.retrieveRequestToken(mConsumer, CALLBACK_URL);
returnauthUrl;
}
publicvoidRetrieveAccessToken(字符串验证器)
throwsOAuthMessageSignerException、OAuthNotAuthorizedException、
OAuthExpectationFailedException, OAuthCommunicationException {
mProvider.setOAuth10a(true);
mProvider.retrieveAccessToken(mConsumer, 验证者);
OAuthUser.USER_ID=mProvider.getResponseParameters().getFirst("user_id");
OAuthUser.ACCESS_TOKEN = mConsumer.getToken();
OAuthUser.ACCESS_TOKEN_SECRET = mConsumer.getTokenSecret();
}
}
更多功能
接下来主要完善两个功能,一是分页浏览,二是发布微博。
未来可能支持图片发布等实用功能。
有UI美化,性能优化。
总结
在学习的过程中,我看了两本书,Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527). pdf,都是很不错的入门书,书我没有看完,但是看了大部分,边看边写demo。
同时,论坛是eoe天天的开发者门户。回答问题、解决问题、提问、发帖,总之就是锻炼自己,强迫自己锻炼基础和思考。
论坛上有很多中文的pdf教程,但是我发现大部分都是android开发者中心的Dev Guide和Resources中的内容的翻译。所以我觉得,如果英文不是很差,建议直接看上面两节,同时练习里面的例子。保证在两周内,你会取得很大的进步。
参考
Technorati 标签:android, 开放平台, oauth, 新浪微博
使用新浪微博开放平台api同步微博内容至自己网站(人人网使用微博账号登录功能直接使用新浪官方登录组件)
网站优化 • 优采云 发表了文章 • 0 个评论 • 67 次浏览 • 2022-03-31 10:06
如果你想在你的网站中嵌入“微博登录”功能,直接使用新浪官方登录组件非常方便。官方教程
首先是完善开发者信息,提交网站认证(获取appkey/appsecret)等步骤,设计登录后的按钮和显示样式,最后将生成的代码复制到我们的网页文件中。
代码显示如下:
测试页面
WB2.anyWhere(function(W){
W.widget.connectButton({
id: "wb_connect_btn",
type:"3,2",
callback : {
login:function(o){ //登录后的回调函数
//alert("login: "+o.screen_name);
},
logout:function(){ //退出后的回调函数
//alert("logout");
}
}
});
});
效果如下:
(用户登录前)
(点击弹出授权窗口)
(授权成功,返回用户信息)
测试地址
不知道为什么弹窗总是被浏览器挡住,看看怎么解决
人人网和腾讯的网站连接比较麻烦,其中人人网需要配置js跨域文件,QQ登录返回的回调数据中收录access_token,需要在js中实现用户信息自己编码。操作。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(人人网使用微博账号登录功能直接使用新浪官方登录组件)
如果你想在你的网站中嵌入“微博登录”功能,直接使用新浪官方登录组件非常方便。官方教程
首先是完善开发者信息,提交网站认证(获取appkey/appsecret)等步骤,设计登录后的按钮和显示样式,最后将生成的代码复制到我们的网页文件中。
代码显示如下:
测试页面
WB2.anyWhere(function(W){
W.widget.connectButton({
id: "wb_connect_btn",
type:"3,2",
callback : {
login:function(o){ //登录后的回调函数
//alert("login: "+o.screen_name);
},
logout:function(){ //退出后的回调函数
//alert("logout");
}
}
});
});
效果如下:

(用户登录前)

(点击弹出授权窗口)

(授权成功,返回用户信息)
测试地址
不知道为什么弹窗总是被浏览器挡住,看看怎么解决
人人网和腾讯的网站连接比较麻烦,其中人人网需要配置js跨域文件,QQ登录返回的回调数据中收录access_token,需要在js中实现用户信息自己编码。操作。
使用新浪微博开放平台api同步微博内容至自己网站(用MBProgressHUD强制给界面设置一个“遮罩”(组图) )
网站优化 • 优采云 发表了文章 • 0 个评论 • 60 次浏览 • 2022-03-30 18:02
)
特征
在开发快易博的时候,有个叫“分享心情”的功能【见下图】。它的主要功能是:用户可以一次发布一条微博(在人人网称为新事物)到用户选择的所有绑定平台(其实就是俗称的微博同步)。
进入后:
这个功能实现起来并不难。说白了就是依次调用各个开放平台的“发布”相关API就够了。但是,为用户提供更好的“用户体验”涉及到几个要求,所以不得不使用多线程。要求如下:
(1)在图2对应的功能界面上,发布完成后用户应该可以立即关闭;
(2)在各个平台的独立发布界面中,发布完成后自动关闭发布界面,并显示打开发布界面前的界面。
注意:分享心情界面实际上实现了一个多功能的发布界面,可以同步推送,也可以选择你要推送的平台。为了给用户提供方便,点击各个平台(如新浪微博)后,都有单独的发布界面发布到平台,提供更多功能,如“@、##”等,见下图。
原创处理
针对以上需求(1),我原来的做法是使用MBProgressHUD在当前界面强制加一个“遮罩”,让用户点击右上角的发帖按钮后,后退按钮不可点击。目的是停留在当前界面等待各种开放平台提供的“发布成功”、“发布失败”等回调协议的执行,并在回调协议中通过提示信息提示用户是否成功在状态栏中。
如果返回按钮是可点击的,用户可能会选择发布完成后立即返回,那么当前的 UIViewController 可能已经被释放,回调时应用会崩溃。当然,如果使用MBProgressHUD持有主界面,用户只能等待,而回调协议执行的时机其实取决于很多不确定因素(比如当前的网速,如果有图的话,也要看图片的大小),以及各个开放平台对API调用的响应速度等),可能很快,也可能要等几十秒。一旦你测试了用户的耐心,你就是在为自己埋下一颗定时炸弹。
对于需求(2),关闭速度比需求(1))要快。我需要让用户在发布完成后立即关闭发布界面。所以当前的UIViewController等不及了对于回调协议的调用,根本无法释放,无法实现状态栏提示,当然折衷的方法是使用MBProgressHUD显示“请稍候……”,强制界面无法响应用户,并选择在回调完成时关闭。
从上面的分析可以看出当前的处理方式,希望回调协议与当前发布界面的UIViewController对象的生命周期无关。那么这些“发布”操作只能在主线程(UI线程)上执行,也实现了发布操作与发布函数接口的解耦。
设计和代码实现
在 iOS 中有几种实现多线程的方法。这里使用了 NSOperation 和 NSOperationQueue。
UML图:
大致代码如下:
发布操作:
#import
#import "MTStatusBarOverlay.h"
@interface PublishOperation : NSOperation
<
MTStatusBarOverlayDelegate
>
@property (nonatomic,copy) NSString* txt;
@property (nonatomic,copy) NSString *publishImgPath;
@property (nonatomic,assign) BOOL completed;
@property (nonatomic,assign) BOOL canceledAfterError;
@property (nonatomic,retain) MTStatusBarOverlay *overlay;
- (void)clearPublishedImage;
- (id)initWithOperateParams:(NSString*)content;
@end
#import "PublishOperation.h"
@implementation PublishOperation
@synthesize completed;
@synthesize canceledAfterError;
@synthesize txt=_txt;
@synthesize overlay=_overlay;
@synthesize publishImgPath=_publishImgPath;
- (void)dealloc{
[_txt release],_txt=nil;
[_overlay release],_overlay=nil;
[_publishImgPath release],_publishImgPath=nil;
[super dealloc];
}
- (id)init{
if (self=[super init]) {
completed=NO;
canceledAfterError=NO;
[self initMTStatusBarOverlay];
}
return self;
}
- (id)initWithOperateParams:(NSString*)content{
if (self=[self init]) {
self.txt=content;
}
return self;
}
/*
*实例化工具栏提示组件
*/
-(void)initMTStatusBarOverlay{
_overlay = [MTStatusBarOverlay sharedInstance];
_overlay.animation = MTStatusBarOverlayAnimationFallDown;
_overlay.detailViewMode = MTDetailViewModeHistory;
_overlay.delegate=self;
}
- (void)main{
//操作既没有完成也没有因为发生错误而取消,则hold住当前run loop
//防止返回主线程使得代理方法无法执行
while (!(self.completed||self.canceledAfterError)) {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
beforeDate:[NSDate distantFuture]];
DebugLog(@"running!");
}
}
#pragma mark - other methods -
- (void)clearPublishedImage{
//清除緩存圖片
if (fileExistsAtPath(self.publishImgPath)) {
removerAtItem(self.publishImgPath);
}
}
@end
新浪微博发布运营
#import "PublishOperation.h"
#import "WBEngine.h"
@interface SinaWeiboPublishOperation : PublishOperation
<
WBEngineDelegate
>
@end
#import "SinaWeiboPublishOperation.h"
@interface SinaWeiboPublishOperation()
@property (nonatomic,retain) WBEngine *engine;
@end
@implementation SinaWeiboPublishOperation
@synthesize engine=_engine;
- (void)dealloc{
[_engine setDelegate:nil];
[_engine release],_engine=nil;
[super dealloc];
}
/*
*business logic
*/
- (void)main{
self.publishImgPath=PUBLISH_IMAGEPATH_SINAWEIBO;
_engine = [[WBEngine alloc]initWithAppKey:kWBSDKDemoAppKey
appSecret:kWBSDKDemoAppSecret];
_engine.delegate=self;
[self.engine sendWeiBoWithText:self.txt
image:[UIImage imageWithContentsOfFile:
PUBLISH_IMAGEPATH_SINAWEIBO]];
[self.overlay postImmediateMessage:@"新浪微博发表中..." animated:YES];
[super main];
}
#pragma mark - WBEngineDelegate Methods -
- (void)engine:(WBEngine *)engine requestDidSucceedWithResult:(id)result{
[self clearPublishedImage];
[GlobalInstance showOverlayMsg:@"新浪微博发表成功!"
andDuration:2.0
andOverlay:self.overlay];
self.completed=YES;
[NSThread sleepForTimeInterval:5];
}
- (void)engine:(WBEngine *)engine requestDidFailWithError:(NSError *)error{
[self clearPublishedImage];
[GlobalInstance showOverlayErrorMsg:@"新浪微博发表失败!"
andDuration:2.0
andOverlay:self.overlay];
self.canceledAfterError=YES;
[NSThread sleepForTimeInterval:5];
}
人人发布操作
#import "PublishOperation.h"
@interface RenRenPublishOperation : PublishOperation
<
RenrenDelegate
>
@end
#import "RenRenPublishOperation.h"
@implementation RenRenPublishOperation
/*
*business logic
*/
- (void)main{
self.publishImgPath=PUBLISH_IMAGEPATH_RENREN;
BOOL hasImage=[[NSFileManager defaultManager]fileExistsAtPath:PUBLISH_IMAGEPATH_RENREN];
if (hasImage) {
ROPublishPhotoRequestParam *photoParams=[[[ROPublishPhotoRequestParam alloc]init]autorelease];
photoParams.imageFile=[UIImage imageWithContentsOfFile:PUBLISH_IMAGEPATH_RENREN];
photoParams.caption=self.txt;
[[Renren sharedRenren] publishPhoto:photoParams andDelegate:self];
[self.overlay postImmediateMessage:@"人人图片上传中..." animated:YES];
}else {
NSMutableDictionary *params=[NSMutableDictionary dictionaryWithCapacity:10];
[params setObject:@"status.set" forKey:@"method"];
[params setObject:self.txt
forKey:@"status"];
[[Renren sharedRenren]requestWithParams:params andDelegate:self];
[self.overlay postImmediateMessage:@"人人状态发表中..." animated:YES];
}
[super main];
}
#pragma mark - RenrenDelegate (ren ren) -
-(void)renren:(Renren *)renren requestDidReturnResponse:(ROResponse *)response{
[self clearPublishedImage];
[GlobalInstance showOverlayMsg:@"人人新鲜事发表成功!"
andDuration:2.0
andOverlay:self.overlay];
self.completed=YES;
[NSThread sleepForTimeInterval:5];
}
腾讯微博发布运营
#import "PublishOperation.h"
#import "TencentWeiboDelegate.h"
@interface TencentWeiboPublishOperation : PublishOperation
<
TencentWeiboDelegate
>
@end
#import "TencentWeiboPublishOperation.h"
#import "TencentWeiboManager.h"
#import "OpenApi.h"
@implementation TencentWeiboPublishOperation
/*
*business logic
*/
- (void)main{
[self.overlay postImmediateMessage:@"腾讯微博发表中..." animated:YES];
self.publishImgPath=PUBLISH_IMAGEPATH_TENCENTWEIBO;
BOOL hasImage=[[NSFileManager defaultManager]fileExistsAtPath:PUBLISH_IMAGEPATH_TENCENTWEIBO];
OpenApi *myApi=[TencentWeiboManager getOpenApi];
myApi.delegate=self;
if (!hasImage) {
[myApi publishWeibo:self.txt
jing:@""
wei:@""
format:@"json"
clientip:@"127.0.0.1"
syncflag:@"0"];
}else{
[myApi publishWeiboWithImageAndContent:self.txt
jing:@"" wei:@""
format:@"json"
clientip:@"127.0.0.1"
syncflag:@"0"];
}
}
#pragma mark - tencent weibo delegate -
- (void)tencentWeiboPublishedSuccessfully{
[self clearPublishedImage];
[GlobalInstance showOverlayMsg:@"腾讯微博发表成功!"
andDuration:2.0
andOverlay:self.overlay];
[NSThread sleepForTimeInterval:5];
}
- (void)tencentWeiboRequestFailWithError{
[self clearPublishedImage];
[GlobalInstance showOverlayErrorMsg:@"腾讯微博发表失败!"
andDuration:2.0
andOverlay:self.overlay];
[NSThread sleepForTimeInterval:5];
}
@end
注意: NSOperation 只需要在非并发执行模式下重新实现它的 main 方法。
PublishOperation的main方法中代码的主要目的是保存当前的RunLoop(一般来说就是阻塞当前的执行上下文,直到回调协议执行完毕)。可以看出还是存在回调协议无法执行的问题。为什么会发生这种情况,为什么要保留执行上下文?因为各个平台的API通常都是异步发送请求的(腾讯微博除外),等到有响应后再执行实现的协议。所谓异步,其实是操作系统在后台用另一个线程来处理的。NSOperation的执行方式是在执行完main方法中实现的逻辑后退出,返回到主线程。所以通常情况下,这里的回调协议仍然没有 t 获得执行的机会(实际上获得了机会,但是当前的NSOperation对象已经被释放,导致内存访问错误)。所以这里用了一个while循环来保存当前的主runloop,直到各个平台的异步回调协议完成,然后设置completed或者cancelAfterError为YES退出while循环。请注意,这两个属性是异步设置的,即由另一个线程设置。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。所以这里用了一个while循环来保存当前的主runloop,直到各个平台的异步回调协议完成,然后设置completed或者cancelAfterError为YES退出while循环。请注意,这两个属性是异步设置的,即由另一个线程设置。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。所以这里用了一个while循环来保存当前的主runloop,直到各个平台的异步回调协议完成,然后设置completed或者cancelAfterError为YES退出while循环。请注意,这两个属性是异步设置的,即由另一个线程设置。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。
顺便吐槽一下腾讯微博开放平台。在他们开放的框架中,发出的请求都是同步获取的,并且没有定义任何回调协议,这也让我很困扰。所以腾讯微博运营中的实现会与新浪和人人不同。因为调用是同步的,所以在腾讯微博PublishOperation结束时直接调用[super main]是没有用的(因为会在回调协议之后执行,所以这里不需要调用),这里调用的是线程的Sleep方法, 让线程休眠 5 秒,也就是将当前的 NSOperation 上下文延迟 5 秒。延迟是因为在状态栏中显示提示信息需要2秒。如果没有延迟,那么完成后设置为YES,NSOperation会被执行并退出,
/*
*状态栏显示完成提示信息
*/
-(void)showOverlayMsg:(NSString*)msg andDuration:(NSTimeInterval)duration andOverlay:(MTStatusBarOverlay*)overlay{
[overlay postImmediateFinishMessage:msg
duration:duration animated:YES];
}
你在应用的AppDelegate中定义一个NSOperationQueue来执行NSOperation,可以完成发布操作与发布功能接口的Controller的解耦。这样,Controller 可以在发布完成后直接关闭和发布,并且由于对功能的封装,成为一个独立的、可复用的整体。在“Share Mood”功能界面中,如果同步推送多个平台,只需要将各个平台的“PublishOperation”扔到NSOperationQueue中,其他的事情就不用操心了,直接关闭或者返回即可。
新浪微博单独发布接口示例代码:
- (void)publishBtn_handle:(id)sender{
NSString *txt=self.publishTxtView.text;
PublishOperation *publishOperation=[[[SinaWeiboPublishOperation alloc]initWithOperateParams:txt]autorelease];
[((FastEasyBlogAppDelegate*)appDelegateObj).operationQueue addOperation:publishOperation];
[self dismissModalViewControllerAnimated:YES];
} 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(用MBProgressHUD强制给界面设置一个“遮罩”(组图)
)
特征
在开发快易博的时候,有个叫“分享心情”的功能【见下图】。它的主要功能是:用户可以一次发布一条微博(在人人网称为新事物)到用户选择的所有绑定平台(其实就是俗称的微博同步)。
进入后:
这个功能实现起来并不难。说白了就是依次调用各个开放平台的“发布”相关API就够了。但是,为用户提供更好的“用户体验”涉及到几个要求,所以不得不使用多线程。要求如下:
(1)在图2对应的功能界面上,发布完成后用户应该可以立即关闭;
(2)在各个平台的独立发布界面中,发布完成后自动关闭发布界面,并显示打开发布界面前的界面。
注意:分享心情界面实际上实现了一个多功能的发布界面,可以同步推送,也可以选择你要推送的平台。为了给用户提供方便,点击各个平台(如新浪微博)后,都有单独的发布界面发布到平台,提供更多功能,如“@、##”等,见下图。
原创处理
针对以上需求(1),我原来的做法是使用MBProgressHUD在当前界面强制加一个“遮罩”,让用户点击右上角的发帖按钮后,后退按钮不可点击。目的是停留在当前界面等待各种开放平台提供的“发布成功”、“发布失败”等回调协议的执行,并在回调协议中通过提示信息提示用户是否成功在状态栏中。
如果返回按钮是可点击的,用户可能会选择发布完成后立即返回,那么当前的 UIViewController 可能已经被释放,回调时应用会崩溃。当然,如果使用MBProgressHUD持有主界面,用户只能等待,而回调协议执行的时机其实取决于很多不确定因素(比如当前的网速,如果有图的话,也要看图片的大小),以及各个开放平台对API调用的响应速度等),可能很快,也可能要等几十秒。一旦你测试了用户的耐心,你就是在为自己埋下一颗定时炸弹。
对于需求(2),关闭速度比需求(1))要快。我需要让用户在发布完成后立即关闭发布界面。所以当前的UIViewController等不及了对于回调协议的调用,根本无法释放,无法实现状态栏提示,当然折衷的方法是使用MBProgressHUD显示“请稍候……”,强制界面无法响应用户,并选择在回调完成时关闭。
从上面的分析可以看出当前的处理方式,希望回调协议与当前发布界面的UIViewController对象的生命周期无关。那么这些“发布”操作只能在主线程(UI线程)上执行,也实现了发布操作与发布函数接口的解耦。
设计和代码实现
在 iOS 中有几种实现多线程的方法。这里使用了 NSOperation 和 NSOperationQueue。
UML图:

大致代码如下:
发布操作:
#import
#import "MTStatusBarOverlay.h"
@interface PublishOperation : NSOperation
<
MTStatusBarOverlayDelegate
>
@property (nonatomic,copy) NSString* txt;
@property (nonatomic,copy) NSString *publishImgPath;
@property (nonatomic,assign) BOOL completed;
@property (nonatomic,assign) BOOL canceledAfterError;
@property (nonatomic,retain) MTStatusBarOverlay *overlay;
- (void)clearPublishedImage;
- (id)initWithOperateParams:(NSString*)content;
@end
#import "PublishOperation.h"
@implementation PublishOperation
@synthesize completed;
@synthesize canceledAfterError;
@synthesize txt=_txt;
@synthesize overlay=_overlay;
@synthesize publishImgPath=_publishImgPath;
- (void)dealloc{
[_txt release],_txt=nil;
[_overlay release],_overlay=nil;
[_publishImgPath release],_publishImgPath=nil;
[super dealloc];
}
- (id)init{
if (self=[super init]) {
completed=NO;
canceledAfterError=NO;
[self initMTStatusBarOverlay];
}
return self;
}
- (id)initWithOperateParams:(NSString*)content{
if (self=[self init]) {
self.txt=content;
}
return self;
}
/*
*实例化工具栏提示组件
*/
-(void)initMTStatusBarOverlay{
_overlay = [MTStatusBarOverlay sharedInstance];
_overlay.animation = MTStatusBarOverlayAnimationFallDown;
_overlay.detailViewMode = MTDetailViewModeHistory;
_overlay.delegate=self;
}
- (void)main{
//操作既没有完成也没有因为发生错误而取消,则hold住当前run loop
//防止返回主线程使得代理方法无法执行
while (!(self.completed||self.canceledAfterError)) {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
beforeDate:[NSDate distantFuture]];
DebugLog(@"running!");
}
}
#pragma mark - other methods -
- (void)clearPublishedImage{
//清除緩存圖片
if (fileExistsAtPath(self.publishImgPath)) {
removerAtItem(self.publishImgPath);
}
}
@end
新浪微博发布运营
#import "PublishOperation.h"
#import "WBEngine.h"
@interface SinaWeiboPublishOperation : PublishOperation
<
WBEngineDelegate
>
@end
#import "SinaWeiboPublishOperation.h"
@interface SinaWeiboPublishOperation()
@property (nonatomic,retain) WBEngine *engine;
@end
@implementation SinaWeiboPublishOperation
@synthesize engine=_engine;
- (void)dealloc{
[_engine setDelegate:nil];
[_engine release],_engine=nil;
[super dealloc];
}
/*
*business logic
*/
- (void)main{
self.publishImgPath=PUBLISH_IMAGEPATH_SINAWEIBO;
_engine = [[WBEngine alloc]initWithAppKey:kWBSDKDemoAppKey
appSecret:kWBSDKDemoAppSecret];
_engine.delegate=self;
[self.engine sendWeiBoWithText:self.txt
image:[UIImage imageWithContentsOfFile:
PUBLISH_IMAGEPATH_SINAWEIBO]];
[self.overlay postImmediateMessage:@"新浪微博发表中..." animated:YES];
[super main];
}
#pragma mark - WBEngineDelegate Methods -
- (void)engine:(WBEngine *)engine requestDidSucceedWithResult:(id)result{
[self clearPublishedImage];
[GlobalInstance showOverlayMsg:@"新浪微博发表成功!"
andDuration:2.0
andOverlay:self.overlay];
self.completed=YES;
[NSThread sleepForTimeInterval:5];
}
- (void)engine:(WBEngine *)engine requestDidFailWithError:(NSError *)error{
[self clearPublishedImage];
[GlobalInstance showOverlayErrorMsg:@"新浪微博发表失败!"
andDuration:2.0
andOverlay:self.overlay];
self.canceledAfterError=YES;
[NSThread sleepForTimeInterval:5];
}
人人发布操作
#import "PublishOperation.h"
@interface RenRenPublishOperation : PublishOperation
<
RenrenDelegate
>
@end
#import "RenRenPublishOperation.h"
@implementation RenRenPublishOperation
/*
*business logic
*/
- (void)main{
self.publishImgPath=PUBLISH_IMAGEPATH_RENREN;
BOOL hasImage=[[NSFileManager defaultManager]fileExistsAtPath:PUBLISH_IMAGEPATH_RENREN];
if (hasImage) {
ROPublishPhotoRequestParam *photoParams=[[[ROPublishPhotoRequestParam alloc]init]autorelease];
photoParams.imageFile=[UIImage imageWithContentsOfFile:PUBLISH_IMAGEPATH_RENREN];
photoParams.caption=self.txt;
[[Renren sharedRenren] publishPhoto:photoParams andDelegate:self];
[self.overlay postImmediateMessage:@"人人图片上传中..." animated:YES];
}else {
NSMutableDictionary *params=[NSMutableDictionary dictionaryWithCapacity:10];
[params setObject:@"status.set" forKey:@"method"];
[params setObject:self.txt
forKey:@"status"];
[[Renren sharedRenren]requestWithParams:params andDelegate:self];
[self.overlay postImmediateMessage:@"人人状态发表中..." animated:YES];
}
[super main];
}
#pragma mark - RenrenDelegate (ren ren) -
-(void)renren:(Renren *)renren requestDidReturnResponse:(ROResponse *)response{
[self clearPublishedImage];
[GlobalInstance showOverlayMsg:@"人人新鲜事发表成功!"
andDuration:2.0
andOverlay:self.overlay];
self.completed=YES;
[NSThread sleepForTimeInterval:5];
}
腾讯微博发布运营
#import "PublishOperation.h"
#import "TencentWeiboDelegate.h"
@interface TencentWeiboPublishOperation : PublishOperation
<
TencentWeiboDelegate
>
@end
#import "TencentWeiboPublishOperation.h"
#import "TencentWeiboManager.h"
#import "OpenApi.h"
@implementation TencentWeiboPublishOperation
/*
*business logic
*/
- (void)main{
[self.overlay postImmediateMessage:@"腾讯微博发表中..." animated:YES];
self.publishImgPath=PUBLISH_IMAGEPATH_TENCENTWEIBO;
BOOL hasImage=[[NSFileManager defaultManager]fileExistsAtPath:PUBLISH_IMAGEPATH_TENCENTWEIBO];
OpenApi *myApi=[TencentWeiboManager getOpenApi];
myApi.delegate=self;
if (!hasImage) {
[myApi publishWeibo:self.txt
jing:@""
wei:@""
format:@"json"
clientip:@"127.0.0.1"
syncflag:@"0"];
}else{
[myApi publishWeiboWithImageAndContent:self.txt
jing:@"" wei:@""
format:@"json"
clientip:@"127.0.0.1"
syncflag:@"0"];
}
}
#pragma mark - tencent weibo delegate -
- (void)tencentWeiboPublishedSuccessfully{
[self clearPublishedImage];
[GlobalInstance showOverlayMsg:@"腾讯微博发表成功!"
andDuration:2.0
andOverlay:self.overlay];
[NSThread sleepForTimeInterval:5];
}
- (void)tencentWeiboRequestFailWithError{
[self clearPublishedImage];
[GlobalInstance showOverlayErrorMsg:@"腾讯微博发表失败!"
andDuration:2.0
andOverlay:self.overlay];
[NSThread sleepForTimeInterval:5];
}
@end
注意: NSOperation 只需要在非并发执行模式下重新实现它的 main 方法。
PublishOperation的main方法中代码的主要目的是保存当前的RunLoop(一般来说就是阻塞当前的执行上下文,直到回调协议执行完毕)。可以看出还是存在回调协议无法执行的问题。为什么会发生这种情况,为什么要保留执行上下文?因为各个平台的API通常都是异步发送请求的(腾讯微博除外),等到有响应后再执行实现的协议。所谓异步,其实是操作系统在后台用另一个线程来处理的。NSOperation的执行方式是在执行完main方法中实现的逻辑后退出,返回到主线程。所以通常情况下,这里的回调协议仍然没有 t 获得执行的机会(实际上获得了机会,但是当前的NSOperation对象已经被释放,导致内存访问错误)。所以这里用了一个while循环来保存当前的主runloop,直到各个平台的异步回调协议完成,然后设置completed或者cancelAfterError为YES退出while循环。请注意,这两个属性是异步设置的,即由另一个线程设置。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。所以这里用了一个while循环来保存当前的主runloop,直到各个平台的异步回调协议完成,然后设置completed或者cancelAfterError为YES退出while循环。请注意,这两个属性是异步设置的,即由另一个线程设置。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。所以这里用了一个while循环来保存当前的主runloop,直到各个平台的异步回调协议完成,然后设置completed或者cancelAfterError为YES退出while循环。请注意,这两个属性是异步设置的,即由另一个线程设置。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。这里解释一下[super main]之后;在每个平台上调用方法,如果您不在回调协议中(或在另一个线程中),则无法设置这两个属性。因为[超级主];这句话阻塞了当前执行 NSOperation 的线程。
顺便吐槽一下腾讯微博开放平台。在他们开放的框架中,发出的请求都是同步获取的,并且没有定义任何回调协议,这也让我很困扰。所以腾讯微博运营中的实现会与新浪和人人不同。因为调用是同步的,所以在腾讯微博PublishOperation结束时直接调用[super main]是没有用的(因为会在回调协议之后执行,所以这里不需要调用),这里调用的是线程的Sleep方法, 让线程休眠 5 秒,也就是将当前的 NSOperation 上下文延迟 5 秒。延迟是因为在状态栏中显示提示信息需要2秒。如果没有延迟,那么完成后设置为YES,NSOperation会被执行并退出,
/*
*状态栏显示完成提示信息
*/
-(void)showOverlayMsg:(NSString*)msg andDuration:(NSTimeInterval)duration andOverlay:(MTStatusBarOverlay*)overlay{
[overlay postImmediateFinishMessage:msg
duration:duration animated:YES];
}
你在应用的AppDelegate中定义一个NSOperationQueue来执行NSOperation,可以完成发布操作与发布功能接口的Controller的解耦。这样,Controller 可以在发布完成后直接关闭和发布,并且由于对功能的封装,成为一个独立的、可复用的整体。在“Share Mood”功能界面中,如果同步推送多个平台,只需要将各个平台的“PublishOperation”扔到NSOperationQueue中,其他的事情就不用操心了,直接关闭或者返回即可。
新浪微博单独发布接口示例代码:
- (void)publishBtn_handle:(id)sender{
NSString *txt=self.publishTxtView.text;
PublishOperation *publishOperation=[[[SinaWeiboPublishOperation alloc]initWithOperateParams:txt]autorelease];
[((FastEasyBlogAppDelegate*)appDelegateObj).operationQueue addOperation:publishOperation];
[self dismissModalViewControllerAnimated:YES];
}
使用新浪微博开放平台api同步微博内容至自己网站(使用新浪微博开放平台api同步微博内容至自己网站就行)
网站优化 • 优采云 发表了文章 • 0 个评论 • 70 次浏览 • 2022-03-30 04:04
使用新浪微博开放平台api同步微博内容至自己网站就可以将内容发布至新浪微博
先把内容上传到新浪微博再绑定自己的微博账号就行,同步的。
一个帐号同步5万条微博内容。直接调用新浪微博开放平台的接口即可。
可以用weibodatepir,
用新浪的api,虽然现在太老旧了,但以后估计会跟时光机一样。
可以用新浪微博开放平台的接口
你先确定自己需要同步的量级,一般同步5万条左右的话,比较可行的方法是走第三方付费产品的接口。我知道的有新浪微博+twitter+adsense也可以试试,不一定最好的,但应该可以最便宜地实现。
新浪api_开放平台在新浪的开放平台里可以尝试
如果从新浪的后台注册一个账号,应该是可以申请同步数据的,但是我没有使用过不是很清楚。
你可以试试腾讯的,在安卓手机上qq浏览器或者电脑上qq浏览器都可以的。
你可以把内容发布到腾讯微博然后设置新浪微博的高级用户发送,
跟老板说明你那里不能同步,然后让你老板替你同步,
今天把我的微博上传至腾讯微博,再下载腾讯微博app(/)点击微博内容,新浪微博在app后台就给你推送了。说简单也简单,说复杂也复杂。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(使用新浪微博开放平台api同步微博内容至自己网站就行)
使用新浪微博开放平台api同步微博内容至自己网站就可以将内容发布至新浪微博
先把内容上传到新浪微博再绑定自己的微博账号就行,同步的。
一个帐号同步5万条微博内容。直接调用新浪微博开放平台的接口即可。
可以用weibodatepir,
用新浪的api,虽然现在太老旧了,但以后估计会跟时光机一样。
可以用新浪微博开放平台的接口
你先确定自己需要同步的量级,一般同步5万条左右的话,比较可行的方法是走第三方付费产品的接口。我知道的有新浪微博+twitter+adsense也可以试试,不一定最好的,但应该可以最便宜地实现。
新浪api_开放平台在新浪的开放平台里可以尝试
如果从新浪的后台注册一个账号,应该是可以申请同步数据的,但是我没有使用过不是很清楚。
你可以试试腾讯的,在安卓手机上qq浏览器或者电脑上qq浏览器都可以的。
你可以把内容发布到腾讯微博然后设置新浪微博的高级用户发送,
跟老板说明你那里不能同步,然后让你老板替你同步,
今天把我的微博上传至腾讯微博,再下载腾讯微博app(/)点击微博内容,新浪微博在app后台就给你推送了。说简单也简单,说复杂也复杂。
使用新浪微博开放平台api同步微博内容至自己网站(即拍即传无需等待帮您以最快的速度分享身边的新鲜事2)
网站优化 • 优采云 发表了文章 • 0 个评论 • 52 次浏览 • 2022-03-28 09:08
拍摄、上传、分享,一气呵成。无需等待即可拍摄和上传,帮助您第一时间分享您身边的最新消息
2.绑定并同步新浪微博和人人网
Vlook可以将视频内容实时同步到新浪微博、人人网等开放平台,并在平台上分享给你的朋友和粉丝
3.多界面显示
Vlook移动端提供宫格、大图、微博等三种视图模式,您可以自由切换,自定义设置。
4.每个视频限时五分钟
强大的视频编辑功能,精准捕捉视频精彩部分,保证您的分享质量
5.多种添加好友方式
提供好友搜索、手机通讯录搜索、短信和邮件推荐,分享视频、邀请好友更方便
6.强大的隐私保护
视频可公开播放、好友可见、自己可见、特定候选人可见,视频分享更人性化
新版本 1.8
修改方块、添加新类别和特色推荐
修改未登录页面访问者内容的推荐
添加了版本和帮助信息
修改部分bug,优化功能
调整后的应用程序图标
适用机型:Apple iPhone XS、Apple iPhone XS Max、Apple iPhone X、Apple iPhone XR、Apple iPhone 8 Plus、Apple iPhone 8、Apple iPhone 7 Plus、Apple iPhone 7、Apple iPhone SE、Apple iPhone 6s Plus、Apple iPhone 6s , Apple iPhone 5s 开放版, Apple iPhone 6 Mobile 4G, Apple iPhone 6, Apple iPhone 5s Mobile 4G, Apple iPhone 6 Plus, Apple iPhone 5c, Apple iPhone 5, Apple iPhone 4S, Apple iPhone 4 (CDMA 版),. .. 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(即拍即传无需等待帮您以最快的速度分享身边的新鲜事2)
拍摄、上传、分享,一气呵成。无需等待即可拍摄和上传,帮助您第一时间分享您身边的最新消息
2.绑定并同步新浪微博和人人网
Vlook可以将视频内容实时同步到新浪微博、人人网等开放平台,并在平台上分享给你的朋友和粉丝
3.多界面显示
Vlook移动端提供宫格、大图、微博等三种视图模式,您可以自由切换,自定义设置。
4.每个视频限时五分钟
强大的视频编辑功能,精准捕捉视频精彩部分,保证您的分享质量
5.多种添加好友方式
提供好友搜索、手机通讯录搜索、短信和邮件推荐,分享视频、邀请好友更方便
6.强大的隐私保护
视频可公开播放、好友可见、自己可见、特定候选人可见,视频分享更人性化
新版本 1.8
修改方块、添加新类别和特色推荐
修改未登录页面访问者内容的推荐
添加了版本和帮助信息
修改部分bug,优化功能
调整后的应用程序图标
适用机型:Apple iPhone XS、Apple iPhone XS Max、Apple iPhone X、Apple iPhone XR、Apple iPhone 8 Plus、Apple iPhone 8、Apple iPhone 7 Plus、Apple iPhone 7、Apple iPhone SE、Apple iPhone 6s Plus、Apple iPhone 6s , Apple iPhone 5s 开放版, Apple iPhone 6 Mobile 4G, Apple iPhone 6, Apple iPhone 5s Mobile 4G, Apple iPhone 6 Plus, Apple iPhone 5c, Apple iPhone 5, Apple iPhone 4S, Apple iPhone 4 (CDMA 版),. ..
使用新浪微博开放平台api同步微博内容至自己网站(Python微博API获取微博内容作者:更多优惠gt(组图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 77 次浏览 • 2022-03-26 21:19
阿里云 > 云栖社区 > 主题地图 > X > 新浪微博api获取数据
推荐活动:
更多优惠>
当前话题:新浪微博api获取数据加入采集
相关话题:
新浪微博api获取数据相关博客看更多博文
使用新浪微博API的Search接口做微博锐排
作者:郑云1802浏览量:05年前
郑云20100929申请入口:简单介绍一下我们的榜单与新浪自己的热门转发榜单的区别:微博睿推榜单会忽略名人推文,更关注草根推文,更关注社会民生推文,屏蔽非- 有营养的推文。微博锐推列表将汇总以新浪微博为首的国内主要微博网站的信息
阅读全文
Python调用微博API获取微博内容
作者:745 浏览评论:05年前
1:获取app-key和app-secret 用自己的微博账号()登录微博开放平台,在微博开放中心下的“创建应用”下创建应用。随意填写申请信息。填写后就不需要了。提交审核,只需要那个app-ke
阅读全文
开放平台:新浪微博 for iOS
作者:余书仪 845 浏览评论:09年前
简介:新浪微博几乎打通了所有平台数据的API接口。所以很多优秀的第三方微博客户端在功能上都非常全面。通过 SNS 进行分享和推广的方式已经在 App 世界中使用。它很常见,随处可见。本文主要介绍App与新浪微博的关联方式。参考:1.开发
阅读全文
新浪微博发展(一)
作者:nothingfinal1071 浏览评论:08年前
这几天一直在研究新浪微博的授权验证。我在论坛上传了一个例子,找到了一个相关的博客文章。. 本以为很容易理解,但花了很长时间,我还是一头雾水。. 后来想了想,其实别人提供的也只是一些接口和方法,我也没有认真研究过授权过程,所以比较关心代码中那些奇怪的方法。
阅读全文
新浪微博发展(一)
作者:xumaojun1002人浏览评论:08年前
这几天一直在研究新浪微博的授权验证。我在论坛上传了一个例子,找到了一个相关的博客文章。. 本以为很容易理解,但花了很长时间,我还是一头雾水。. 后来想了想,其实别人提供的也只是一些接口和方法,我也没有认真研究过授权过程,所以比较关心代码中那些奇怪的方法。
阅读全文
新浪微博开放平台开发步骤介绍(适合新手)
作者:技术组合950人查看评论数:04年前
我也是新手,第一次使用开放平台进行开发。起初,我觉得我无处可去。经过长时间的摸索,终于成功调用了API。现在把这段经历介绍给新手(高手不用看,当然如果大家能提出一些意见和建议,非常感谢),也想和大家交流。本示例介绍如何使用 API 提交数据(发布微
阅读全文
新浪微博开放平台老API中的PHP例程
作者:何立坚 1019 浏览评论:010年前
相关文章:一、PHP+新浪微博开放平台+新浪云平台(SAE)解决方案基础二、微博应用搭建流程三、PHP中的demo程序SDK简析四、进修趋势及有用资源五、必解的几个问题【PDF全文下载】本文是新浪微博老API中的PHP例程,可以作为第一步
阅读全文
iOS:新浪微博OAuth认证
作者:犹豫1185查看评论:04年前
新浪微博OAuth认证1、资源授权•在腾讯、新浪等互联网行业,用户群体非常庞大•有时需要共享一些用户资源,比如第三方想要访问用户的QQ数据,第三方想要访问用户的新浪微博数据 • 如果要共享用户资源,必须征得用户的同意,那么这里就有资源。
阅读全文 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(Python微博API获取微博内容作者:更多优惠gt(组图))
阿里云 > 云栖社区 > 主题地图 > X > 新浪微博api获取数据

推荐活动:
更多优惠>
当前话题:新浪微博api获取数据加入采集
相关话题:
新浪微博api获取数据相关博客看更多博文
使用新浪微博API的Search接口做微博锐排

作者:郑云1802浏览量:05年前
郑云20100929申请入口:简单介绍一下我们的榜单与新浪自己的热门转发榜单的区别:微博睿推榜单会忽略名人推文,更关注草根推文,更关注社会民生推文,屏蔽非- 有营养的推文。微博锐推列表将汇总以新浪微博为首的国内主要微博网站的信息
阅读全文
Python调用微博API获取微博内容


作者:745 浏览评论:05年前
1:获取app-key和app-secret 用自己的微博账号()登录微博开放平台,在微博开放中心下的“创建应用”下创建应用。随意填写申请信息。填写后就不需要了。提交审核,只需要那个app-ke
阅读全文
开放平台:新浪微博 for iOS

作者:余书仪 845 浏览评论:09年前
简介:新浪微博几乎打通了所有平台数据的API接口。所以很多优秀的第三方微博客户端在功能上都非常全面。通过 SNS 进行分享和推广的方式已经在 App 世界中使用。它很常见,随处可见。本文主要介绍App与新浪微博的关联方式。参考:1.开发
阅读全文
新浪微博发展(一)


作者:nothingfinal1071 浏览评论:08年前
这几天一直在研究新浪微博的授权验证。我在论坛上传了一个例子,找到了一个相关的博客文章。. 本以为很容易理解,但花了很长时间,我还是一头雾水。. 后来想了想,其实别人提供的也只是一些接口和方法,我也没有认真研究过授权过程,所以比较关心代码中那些奇怪的方法。
阅读全文
新浪微博发展(一)


作者:xumaojun1002人浏览评论:08年前
这几天一直在研究新浪微博的授权验证。我在论坛上传了一个例子,找到了一个相关的博客文章。. 本以为很容易理解,但花了很长时间,我还是一头雾水。. 后来想了想,其实别人提供的也只是一些接口和方法,我也没有认真研究过授权过程,所以比较关心代码中那些奇怪的方法。
阅读全文
新浪微博开放平台开发步骤介绍(适合新手)


作者:技术组合950人查看评论数:04年前
我也是新手,第一次使用开放平台进行开发。起初,我觉得我无处可去。经过长时间的摸索,终于成功调用了API。现在把这段经历介绍给新手(高手不用看,当然如果大家能提出一些意见和建议,非常感谢),也想和大家交流。本示例介绍如何使用 API 提交数据(发布微
阅读全文
新浪微博开放平台老API中的PHP例程

作者:何立坚 1019 浏览评论:010年前
相关文章:一、PHP+新浪微博开放平台+新浪云平台(SAE)解决方案基础二、微博应用搭建流程三、PHP中的demo程序SDK简析四、进修趋势及有用资源五、必解的几个问题【PDF全文下载】本文是新浪微博老API中的PHP例程,可以作为第一步
阅读全文
iOS:新浪微博OAuth认证


作者:犹豫1185查看评论:04年前
新浪微博OAuth认证1、资源授权•在腾讯、新浪等互联网行业,用户群体非常庞大•有时需要共享一些用户资源,比如第三方想要访问用户的QQ数据,第三方想要访问用户的新浪微博数据 • 如果要共享用户资源,必须征得用户的同意,那么这里就有资源。
阅读全文
使用新浪微博开放平台api同步微博内容至自己网站(用后端BaaS快速搭建专属无点赞评论——b言b语后,立马就自己动手部署了)
网站优化 • 优采云 发表了文章 • 0 个评论 • 43 次浏览 • 2022-03-26 21:19
“本文参加2020年少数派论文征集+高效行动党”
去年4月,因为疫情,我被迫呆在家里,无法出门与人交流。无意中看到这篇文章防御表情:用后台BaaS快速搭建一个没有点赞评论的专属微博——b词b词之后,我马上自己部署了一个。
我之所以很积极,是因为我曾经在朋友圈发过一张图,完全不知道这张图出了什么问题,这样微信朋友圈、聊天对话甚至里面的对方都可以看不到图片。我也不希望自己的思想或言语无法被自己掌握。如果有一天我不能使用这些平台,我可能会丢失这些数据,并且管理它们很不方便。
为什么要备份?
搭建完成后,您可以随时随地在PC端和移动端发布自己的乱码。但我之所以开始每周备份数据,是因为某天晚上在床上发了一些自己的想法后,不小心打错了一些字,强迫症立马打开网页去了Leancloud后台做出改变。
但是,由于旧版的 Leancloud 网页不适合手机,所有的按钮和文字都挤在了一起。因此,您可以对数据进行更改的区域只是权利的一小部分。新版本的背景如下图所示。左边的界面可以关闭,但是老版本不能一直显示。
虽然老版本的界面有点小心翼翼,但还是可以完成修改数据、保存数据等一系列操作。本来应该点击红框删除一行的,但是那天晚上有点困,没有反复确认就点击了黄框,不小心把全班的数据都删了。
因为Leancloud开发版不支持数据恢复,但商业版的成本是我负担不起的数字,我被迫开始每周使用坚果云+OneDrive进行定期数据备份。
开发版不支持数据恢复。为什么要使用快捷命令进行数据备份?
起初,我使用网页版进行数据备份。我需要每周中午前打开后台,选择我需要备份的班级,然后去邮箱下载资料。
这一步带来了一些不便:
中午前打开后台,不然只能等明天数据导出了;每次都需要手动选择要备份的类;每次打开电脑或手机网页不方便;懒,希望有更简单的方法;
使用快捷命令导出数据以进行备份
突然有一天,我在修改使用快捷方式发出HTTP请求向后台写入数据的时候,想到是否可以通过HTTP请求导出数据?查了Leancloud的文档,找到了对应的API接口。
这种请求格式类似于《B语言b》作者提供的快捷模板。我们只需要将 url 修改为 /exportData。
由于我有两个类需要导出,根据文档说明,我在需要导出的请求体中添加了两个名为 content 和 dream 的类。
指定类
当然,您也可以实现其他操作,这些操作在 API 文档中有所提及。您可以根据需要进行配置,例如:
指定导出数据的开始时间 指定接收邮箱返回导出结果的下载链接... 用 Postman 调试
因为快捷命令不方便调试,而且 Leancloud 对导出数据有限制,所以一天只有三个机会。所以如果你已经安装了Postman软件,建议你先在Postman中测试一下,完成后再填写快捷指令,减少不必要的麻烦。
您可以轻松使用文档中提供的 curl 命令快速导入 Postman 进行调试和配置。
最后只需要为自己的应用修改蓝框中的相关信息即可。
以上信息可以在应用程序的设置——应用程序密钥中找到。复制后直接填写即可。
可以在下方查看是否报错,然后根据文档排查错误。
成功导出
导出 3 次以上后提示自动导出数据
借助快捷方式和自动化,可以完美解决之前遇到的四大烦恼。你需要做的就是找个空闲时间打开邮箱下载资料,优采云福音。
当然你也可以使用服务器,同样的技巧可以通过编写定时任务来实现。
如果大家有更好的办法,欢迎在评论区留言一起讨论。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(用后端BaaS快速搭建专属无点赞评论——b言b语后,立马就自己动手部署了)
“本文参加2020年少数派论文征集+高效行动党”
去年4月,因为疫情,我被迫呆在家里,无法出门与人交流。无意中看到这篇文章防御表情:用后台BaaS快速搭建一个没有点赞评论的专属微博——b词b词之后,我马上自己部署了一个。
我之所以很积极,是因为我曾经在朋友圈发过一张图,完全不知道这张图出了什么问题,这样微信朋友圈、聊天对话甚至里面的对方都可以看不到图片。我也不希望自己的思想或言语无法被自己掌握。如果有一天我不能使用这些平台,我可能会丢失这些数据,并且管理它们很不方便。

为什么要备份?
搭建完成后,您可以随时随地在PC端和移动端发布自己的乱码。但我之所以开始每周备份数据,是因为某天晚上在床上发了一些自己的想法后,不小心打错了一些字,强迫症立马打开网页去了Leancloud后台做出改变。
但是,由于旧版的 Leancloud 网页不适合手机,所有的按钮和文字都挤在了一起。因此,您可以对数据进行更改的区域只是权利的一小部分。新版本的背景如下图所示。左边的界面可以关闭,但是老版本不能一直显示。


虽然老版本的界面有点小心翼翼,但还是可以完成修改数据、保存数据等一系列操作。本来应该点击红框删除一行的,但是那天晚上有点困,没有反复确认就点击了黄框,不小心把全班的数据都删了。

因为Leancloud开发版不支持数据恢复,但商业版的成本是我负担不起的数字,我被迫开始每周使用坚果云+OneDrive进行定期数据备份。

开发版不支持数据恢复。为什么要使用快捷命令进行数据备份?
起初,我使用网页版进行数据备份。我需要每周中午前打开后台,选择我需要备份的班级,然后去邮箱下载资料。
这一步带来了一些不便:
中午前打开后台,不然只能等明天数据导出了;每次都需要手动选择要备份的类;每次打开电脑或手机网页不方便;懒,希望有更简单的方法;

使用快捷命令导出数据以进行备份
突然有一天,我在修改使用快捷方式发出HTTP请求向后台写入数据的时候,想到是否可以通过HTTP请求导出数据?查了Leancloud的文档,找到了对应的API接口。

这种请求格式类似于《B语言b》作者提供的快捷模板。我们只需要将 url 修改为 /exportData。

由于我有两个类需要导出,根据文档说明,我在需要导出的请求体中添加了两个名为 content 和 dream 的类。

指定类
当然,您也可以实现其他操作,这些操作在 API 文档中有所提及。您可以根据需要进行配置,例如:
指定导出数据的开始时间 指定接收邮箱返回导出结果的下载链接... 用 Postman 调试
因为快捷命令不方便调试,而且 Leancloud 对导出数据有限制,所以一天只有三个机会。所以如果你已经安装了Postman软件,建议你先在Postman中测试一下,完成后再填写快捷指令,减少不必要的麻烦。
您可以轻松使用文档中提供的 curl 命令快速导入 Postman 进行调试和配置。



最后只需要为自己的应用修改蓝框中的相关信息即可。

以上信息可以在应用程序的设置——应用程序密钥中找到。复制后直接填写即可。

可以在下方查看是否报错,然后根据文档排查错误。

成功导出

导出 3 次以上后提示自动导出数据
借助快捷方式和自动化,可以完美解决之前遇到的四大烦恼。你需要做的就是找个空闲时间打开邮箱下载资料,优采云福音。



当然你也可以使用服务器,同样的技巧可以通过编写定时任务来实现。
如果大家有更好的办法,欢迎在评论区留言一起讨论。
使用新浪微博开放平台api同步微博内容至自己网站(QQ、微博、github等网站的登陆与注册逻辑)
网站优化 • 优采云 发表了文章 • 0 个评论 • 74 次浏览 • 2022-03-26 21:16
QQ、微博、github等网站的用户数量很大,其他网站为了简化自己的登录注册逻辑网站 ,引入社交登录功能;
步骤:
1),用户点击QQ按钮
2),引导跳转到QQ授权页面
3),用户主动点击授权,跳转到上一个网页。
1、OAuth2.0
(A) 用户打开客户端后,客户端向用户请求授权。
(B) 用户同意授权客户端。
(C)客户端使用上一步获得的授权向认证服务器申请token。
(D)认证服务器对客户端进行认证后,确认无误,同意颁发token。
(E)客户端使用token向资源服务器申请获取资源。
(F) 资源服务器确认token正确,同意向客户端开放资源。
%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6
2、微博登录准备
1、进入微博开放平台
2、登录微博,进入微博,选择网站访问
3、选择立即访问
4、创建您自己的应用程序
5、我们已准备好在开发中进行测试
记住您的应用密钥和应用秘密,我们稍后会使用它
6、输入高级信息,填写授权回调页面地址
7、添加测试账号(可选)
8、进入文档,按照流程测试社交登录
3、微博登录测试
1、将用户引导至以下地址
YOUR_CLIENT_ID:是应用密钥
YOUR_REGISTERED_REDIRECT_URI:是返回成功的uri
2、如果用户同意授权,页面跳转到YOUR_REGISTERED_REDIRECT_URI/?code=CODE
3、使用返回的代码换取访问令牌
像这样返回一个 access_token 和 uid
4、使用AccessToken调用开发API获取用户信息
%E5%BE%AE%E5%8D%9AAPI
例如,获取用户最新发布的微博列表:
至此微博登录调试完成。
Oauth2.0;授权通过后,将code换成access_token,即可访问任意开放的API
1),代码使用后会被销毁
2),access_token 几天都一样
4、社交登录步骤
1),在页面上放一个社交登录按钮,点击地址是
微博登录
2),只要用户通过授权,就会自动跳转到我们指定的那个,并且会在url后面带一个code=xxxxxxxx
3),获取此代码并发送请求以换取 access_token。
4),可以通过access_token调用所有开放的API;
您可以将所有用户信息保存到自己的网站。
核心:
该代码为一次性使用,只要使用就会失效。
access_token:固定,完全固定一段时间。
uid:总是固定的。
我们自己的系统如何识别唯一用户是使用social网站的uid。 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(QQ、微博、github等网站的登陆与注册逻辑)
QQ、微博、github等网站的用户数量很大,其他网站为了简化自己的登录注册逻辑网站 ,引入社交登录功能;
步骤:
1),用户点击QQ按钮
2),引导跳转到QQ授权页面
3),用户主动点击授权,跳转到上一个网页。
1、OAuth2.0

(A) 用户打开客户端后,客户端向用户请求授权。
(B) 用户同意授权客户端。
(C)客户端使用上一步获得的授权向认证服务器申请token。
(D)认证服务器对客户端进行认证后,确认无误,同意颁发token。
(E)客户端使用token向资源服务器申请获取资源。
(F) 资源服务器确认token正确,同意向客户端开放资源。
%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6
2、微博登录准备
1、进入微博开放平台
2、登录微博,进入微博,选择网站访问

3、选择立即访问

4、创建您自己的应用程序
5、我们已准备好在开发中进行测试

记住您的应用密钥和应用秘密,我们稍后会使用它
6、输入高级信息,填写授权回调页面地址

7、添加测试账号(可选)
8、进入文档,按照流程测试社交登录
3、微博登录测试
1、将用户引导至以下地址
YOUR_CLIENT_ID:是应用密钥
YOUR_REGISTERED_REDIRECT_URI:是返回成功的uri
2、如果用户同意授权,页面跳转到YOUR_REGISTERED_REDIRECT_URI/?code=CODE
3、使用返回的代码换取访问令牌

像这样返回一个 access_token 和 uid
4、使用AccessToken调用开发API获取用户信息
%E5%BE%AE%E5%8D%9AAPI
例如,获取用户最新发布的微博列表:

至此微博登录调试完成。
Oauth2.0;授权通过后,将code换成access_token,即可访问任意开放的API
1),代码使用后会被销毁
2),access_token 几天都一样
4、社交登录步骤
1),在页面上放一个社交登录按钮,点击地址是
微博登录
2),只要用户通过授权,就会自动跳转到我们指定的那个,并且会在url后面带一个code=xxxxxxxx
3),获取此代码并发送请求以换取 access_token。
4),可以通过access_token调用所有开放的API;
您可以将所有用户信息保存到自己的网站。
核心:
该代码为一次性使用,只要使用就会失效。
access_token:固定,完全固定一段时间。
uid:总是固定的。
我们自己的系统如何识别唯一用户是使用social网站的uid。
使用新浪微博开放平台api同步微博内容至自己网站(ReadMe仓库停止服务.8.0修复bug.v10.8.1)
网站优化 • 优采云 发表了文章 • 0 个评论 • 46 次浏览 • 2022-03-25 03:04
自述文件
公告:
针对Jcenter仓库的宕机问题,我们重新提供了基于MavenCentral仓库的依赖方法并更新了SDK版本
SDK v11.8.1 文档
在项目根目录下的build.gradle文件中添加依赖配置
allprojects {
repositories {
mavenCentral()
……
}
}
在模块的 build.gradle 文件中添加依赖和属性配置
android {
……
defaultConfig {
ndk {
abiFilters 'armeabi' //, 'armeabi-v7a','arm64-v8a'
}
}
}
dependencies {
implementation 'io.github.sinaweibosdk:core:11.8.1@aar'
}
文件地址:文件
新包裹地址:
旧包地址:新版本和文档
v11.8.1
修复部分场景下分享后回调结果无法正确返回的问题。
v11.6.0
修复崩溃。新增超级聊天分享功能(需要与微博协商获得白名单权限才能开发此功能,否则分享无效)
v10.10.0
适配Android 11,支持通过FileProvider分享。
v10.9.0
修复可能的安全问题。
v10.8.0
修复错误。
v10.7.0
20年来的第一个版本,基于v9.12.0的升级。主要解决9.12.0版本的bug.3。v4.xx版本系列不再维护,建议升级。具体访问方法在2019 SDK目录下有文档。如果您在访问过程中遇到问题,请及时联系我解决。()
2019年底,微博SDK版本v9.12.0全新更新:
1.新的SDK接入文档解决了同学们接入时没有详细文档的痛点。
2.新的 SDK API 设计。
3.全新的SDK Demo,支持傻瓜式访问。
4.aar 包瘦身并删除无用代码。
当心:
1.新版本的API发生了变化。如果要升级到最新版本,需要按照文档一步步升级。
2.新版本位置:2019SDK。
3.如果您在新版本的访问中遇到问题,请及时联系我,我看到会及时回复您。( )
数据的下载入口在这个网页的右侧,有一个下载-ZIP按钮,可以本地下载。↗↗
为了方便第三方开发者快速集成微博SDK,我们提供以下联系方式协助开发者进行集成:
QQ群:248982250
QQ群:284084420
QQ群:109094998 邮箱:
微博:新的移动技术
虽然我们提供了几份文件,但总有不满意的地方。为了快速上手,少走弯路,我们建议您使用以下方法来了解和集成微博SDK。
如果您在使用过程中不知道如何解决一些问题,请仔细阅读:常见问题FAQ,并尝试找到相应的答案。
另外,关于SDK的bug反馈、用户体验、建议和不足,请尽量提交到Github,充分利用Github这个工具。目前,SDK有很多不足之处。请给我们一些时间。我们将努力为第三方开发者提供标准化、易用、稳定、可靠、可扩展、可定制的SDK。
发行说明:Android SDK V4.1 版本更改:
v4.4.4
1.去除异常打印堆栈信息。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.4.3
1.解决空指针异常。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.4.2
1.修复恶意启动可能导致的崩溃。(如果没有包注册获取新版本(加入白名单),请联系QQ(879073159))
v4.4.1
1.默认支持armeabi、arm64-v8a、armeabi-v7a架构。
2.修改无法获取权限时可能导致的异常。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.4.0
1.默认支持 armeabi、arm64-v8a 两种架构。
2.修复分享时横竖屏切换导致的异常。
3.修复其他bug(如果没有包注册获取新版本(加入白名单),请联系QQ(879073159))
4.4.3.8 已经报过的,以后不用报了。
v4.3.9
1.修复了分享中遇到的一些bug。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.3.8
1.修复部分bug2.默认只支持armeabi架构3.使用4.3.8时请联系客服进行包注册。联系QQ(879073159)
v4.3.7
1.错误修复
2.添加64位所以
v4.3.6
1.错误修复
v4.3.5
1.修复Android4.4.4以下版本分享后无回调。
v4.3.4
1.错误修复
v4.3.11.修复bug2.关于分享后的回调,4.3.0开始接受如下方式:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
shareHandler.doResultIntent(data,this);
}
v4.3.01.修复bug
v4.2.71.支持微博速成版授权登录
v4.11.修复一些已知bug2.支持多图分享和视频分享3.支持分享视频到微博故事
v4.01.新的授权和分享逻辑,让你的访问更加明确2.修复了一些已知问题
v3.2
新网页授权和共享移除open api相关文档,如果还想继续使用open api,请参考旧版本目录【旧版本相关/demo-src】访问,维护和移除LinkCard模式共享,目前仅支持文字与图片混合(我们不建议您继续使用旧的sdk访问微博进行LinkCard共享,微博客户端将来可能会取消此功能,这可能会导致您的程序异常)删除微博支付功能并简化sdk , 解决已知错误的快速入门概述
微博安卓平台SDK为第三方应用提供简单易用的微博API调用服务,使第三方客户端无需了解复杂的验证机制即可进行授权登录,并提供微博分享功能,可直接通过微博访问。官方客户端分享微博。
本文档详情请参考:微博Android平台SDK文档V4.1.pdf
名词解释名词注释
应用密钥
分配给每个第三方应用程序的应用程序密钥。用于身份验证、显示来源等功能。
重定向URI
第三方应用授权回调页面。推荐使用默认回调页面,可以在新浪微博开放平台->我的应用->应用信息->高级应用->授权设置->应用回调页面找到。
范围
通过范围,平台将向开发者开放更多微博核心功能,同时加强用户隐私保护,提升用户体验。用户有权在新的 OAuth2.0 授权页面上选择分配给应用程序的功能。
访问令牌
代表用户身份的令牌,用于微博API调用。
网页授权
通过WebView授权,返回Token信息。
SSO 授权
通过调用微博客户端授权并返回Token信息。
使用微博sdk授权分享时,请确保您的AppKey、RedirectURI、Scope、PackageName与开发者官网一致。
功能列表1. 认证授权特别说明:新版sdk去掉了openapi功能(包括获取用户信息等方法),授权后获取用户信息请参考openapi接口文档微博开放平台api,使用自带的网络引擎请求数据2.分享到微博
通过微博SDK,第三方应用可以分享文字、图片、视频:
有微博客户
OpenApi openApi 不再在微博 sdk 中维护。如果要使用OpenApi,请参考开发者网站使用自己的网络访问
运行示例代码
为了方便第三方应用更快地集成微博SDK,更清楚地了解微博SDK提供的功能,我们在GitHub上提供了一个简单的示例工程和对应的APK安装包。
**方法一:**通过adb install命令直接安装app_debug.apk(新建文档文件夹下)**方法二:**在Android Studio中导入并运行weibosdkdemo项目(详见Android微博)平台SDK文档4.1.pdf:运行示例代码)
微博SDK和DEMO项目目录结构及分析
微博SDK目前以部分开源的形式提供给第三方开发者。简而言之,可以分为以下三个部分:
集成前准备1. 申请应用的APP_KEY
在这一步,您需要在微博开放平台上注册您的应用,获取APP_KEY,并添加应用的授权回调页面(Redirect URI)。详情请仔细阅读:手机客户端访问( )
2. 注册的应用包名和签名
您需要在微博开放平台上注册应用程序的包名和签名,才能正确进行授权。
请注意:包名和签名未注册,或签名注册错误,将导致授权失败。
应用包名:指AndroidManifest.xml文件中package标签所代表的内容。
应用签名:签名是官方签名工具生成的MD5值。
详情请参考:微博Android平台SDK文档V4.0pdf:如何使用签名工具获取应用的签名?
3. 集成SDK
1:Android Studio访问修改你项目主模块下的build.gradle文件,添加微博sdk的依赖
allprojects {
repositories {
jcenter()
mavenCentral()
maven { url "https://dl.bintray.com/thelasterstar/maven/" }
}
}
compile 'com.sina.weibo.sdk:core:4.4.3:openDefaultRelease@aar'
或者将新建文档目录下的openDefault-4.4.1.aar复制到工程libs目录下,修改build.gradle文件如下:
repositories{
flatDir {
dirs 'libs'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:24.2.1'
compile(name: 'openDefault-4.4.3', ext: 'aar')
}
2:日食:
将github项目下【eclipse集成】目录下的文件复制到你的项目中
3:差不多
微博sdk aar默认提供[armeabi] [armeabi-v7a] [arm64-v8a]三个平台的so。如果需要适配更多版本的so,请到github->so目录获取所有平台so文件
如果只想引入特定平台,在gradle中配置如下
splits {
abi {
enable true
reset()
include 'armeabi' //根据需求自己修改
universalApk true
}
}
4:关于混淆
-keep class com.sina.weibo.sdk.** { *; }
第三方如何使用(认证授权)1.替换自己应用的APP_KEY等参数
鉴于很多第三方开发者在Demo中直接复制使用Constants类,有必要说明一下第三方开发者需要将Constants类中的各种参数替换为自己应用程序的参数。请仔细阅读代码注释。
public interface Constants {
/** 当前 DEMO 应用的 APP_KEY,第三方应用应该使用自己的 APP_KEY 替换该 APP_KEY */
public static final String APP_KEY = "2045436852";
/**
* 当前 DEMO 应用的回调页,第三方应用可以使用自己的回调页。
* 建议使用默认回调页:https://api.weibo.com/oauth2/default.html
*/
public static final String REDIRECT_URL = "http://www.sina.com";
/**
* WeiboSDKDemo 应用对应的权限,第三方开发者一般不需要这么多,可直接设置成空即可。
* 详情请查看 Demo 中对应的注释。
*/
public static final String SCOPE =
"email,direct_messages_read,direct_messages_write,"
+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
+ "follow_app_official_microblog," + "invitation_write";
}
2. 创建微博API接口类对象
mAuthInfo = new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE);
WbSdk.install(this,mAuthInfo);
其中:APP_KEY、REDIRECT_URL、SCOPE需要替换为第三方应用申请的内容。
3. 实现 WbAuthListener 接口
private class SelfWbAuthListener implements com.sina.weibo.sdk.auth.WbAuthListener{
@Override
public void onSuccess(final Oauth2AccessToken token) {
WBAuthActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
mAccessToken = token;
if (mAccessToken.isSessionValid()) {
// 显示 Token
updateTokenView(false);
// 保存 Token 到 SharedPreferences
AccessTokenKeeper.writeAccessToken(WBAuthActivity.this, mAccessToken);
Toast.makeText(WBAuthActivity.this,
R.string.weibosdk_demo_toast_auth_success, Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void cancel() {
Toast.makeText(WBAuthActivity.this,
R.string.weibosdk_demo_toast_auth_canceled, Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(WbConnectErrorMessage errorMessage) {
Toast.makeText(WBAuthActivity.this, errorMessage.getErrorMessage(), Toast.LENGTH_LONG).show();
}
}
4. 调用方法、认证和授权
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler.authorizeWeb(new WbAuthListener());
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler. authorizeClientSso(new WbAuthListener());
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler. authorize(new WbAuthListener());
以上三个授权需要在Activity的onActivityResult函数中调用如下方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (mSsoHandler != null) {
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
其他功能
其他功能请参考文档:微博Android平台SDK文档V4.1.pdf 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(ReadMe仓库停止服务.8.0修复bug.v10.8.1)
自述文件
公告:
针对Jcenter仓库的宕机问题,我们重新提供了基于MavenCentral仓库的依赖方法并更新了SDK版本
SDK v11.8.1 文档
在项目根目录下的build.gradle文件中添加依赖配置
allprojects {
repositories {
mavenCentral()
……
}
}
在模块的 build.gradle 文件中添加依赖和属性配置
android {
……
defaultConfig {
ndk {
abiFilters 'armeabi' //, 'armeabi-v7a','arm64-v8a'
}
}
}
dependencies {
implementation 'io.github.sinaweibosdk:core:11.8.1@aar'
}
文件地址:文件
新包裹地址:
旧包地址:新版本和文档
v11.8.1
修复部分场景下分享后回调结果无法正确返回的问题。
v11.6.0
修复崩溃。新增超级聊天分享功能(需要与微博协商获得白名单权限才能开发此功能,否则分享无效)
v10.10.0
适配Android 11,支持通过FileProvider分享。
v10.9.0
修复可能的安全问题。
v10.8.0
修复错误。
v10.7.0
20年来的第一个版本,基于v9.12.0的升级。主要解决9.12.0版本的bug.3。v4.xx版本系列不再维护,建议升级。具体访问方法在2019 SDK目录下有文档。如果您在访问过程中遇到问题,请及时联系我解决。()
2019年底,微博SDK版本v9.12.0全新更新:
1.新的SDK接入文档解决了同学们接入时没有详细文档的痛点。
2.新的 SDK API 设计。
3.全新的SDK Demo,支持傻瓜式访问。
4.aar 包瘦身并删除无用代码。
当心:
1.新版本的API发生了变化。如果要升级到最新版本,需要按照文档一步步升级。
2.新版本位置:2019SDK。
3.如果您在新版本的访问中遇到问题,请及时联系我,我看到会及时回复您。( )
数据的下载入口在这个网页的右侧,有一个下载-ZIP按钮,可以本地下载。↗↗
为了方便第三方开发者快速集成微博SDK,我们提供以下联系方式协助开发者进行集成:
QQ群:248982250
QQ群:284084420
QQ群:109094998 邮箱:
微博:新的移动技术
虽然我们提供了几份文件,但总有不满意的地方。为了快速上手,少走弯路,我们建议您使用以下方法来了解和集成微博SDK。
如果您在使用过程中不知道如何解决一些问题,请仔细阅读:常见问题FAQ,并尝试找到相应的答案。
另外,关于SDK的bug反馈、用户体验、建议和不足,请尽量提交到Github,充分利用Github这个工具。目前,SDK有很多不足之处。请给我们一些时间。我们将努力为第三方开发者提供标准化、易用、稳定、可靠、可扩展、可定制的SDK。
发行说明:Android SDK V4.1 版本更改:
v4.4.4
1.去除异常打印堆栈信息。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.4.3
1.解决空指针异常。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.4.2
1.修复恶意启动可能导致的崩溃。(如果没有包注册获取新版本(加入白名单),请联系QQ(879073159))
v4.4.1
1.默认支持armeabi、arm64-v8a、armeabi-v7a架构。
2.修改无法获取权限时可能导致的异常。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.4.0
1.默认支持 armeabi、arm64-v8a 两种架构。
2.修复分享时横竖屏切换导致的异常。
3.修复其他bug(如果没有包注册获取新版本(加入白名单),请联系QQ(879073159))
4.4.3.8 已经报过的,以后不用报了。
v4.3.9
1.修复了分享中遇到的一些bug。(如果没有包注册获取新版本(待加入白名单),请联系QQ(879073159))
v4.3.8
1.修复部分bug2.默认只支持armeabi架构3.使用4.3.8时请联系客服进行包注册。联系QQ(879073159)
v4.3.7
1.错误修复
2.添加64位所以
v4.3.6
1.错误修复
v4.3.5
1.修复Android4.4.4以下版本分享后无回调。
v4.3.4
1.错误修复
v4.3.11.修复bug2.关于分享后的回调,4.3.0开始接受如下方式:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
shareHandler.doResultIntent(data,this);
}
v4.3.01.修复bug
v4.2.71.支持微博速成版授权登录
v4.11.修复一些已知bug2.支持多图分享和视频分享3.支持分享视频到微博故事
v4.01.新的授权和分享逻辑,让你的访问更加明确2.修复了一些已知问题
v3.2
新网页授权和共享移除open api相关文档,如果还想继续使用open api,请参考旧版本目录【旧版本相关/demo-src】访问,维护和移除LinkCard模式共享,目前仅支持文字与图片混合(我们不建议您继续使用旧的sdk访问微博进行LinkCard共享,微博客户端将来可能会取消此功能,这可能会导致您的程序异常)删除微博支付功能并简化sdk , 解决已知错误的快速入门概述
微博安卓平台SDK为第三方应用提供简单易用的微博API调用服务,使第三方客户端无需了解复杂的验证机制即可进行授权登录,并提供微博分享功能,可直接通过微博访问。官方客户端分享微博。
本文档详情请参考:微博Android平台SDK文档V4.1.pdf
名词解释名词注释
应用密钥
分配给每个第三方应用程序的应用程序密钥。用于身份验证、显示来源等功能。
重定向URI
第三方应用授权回调页面。推荐使用默认回调页面,可以在新浪微博开放平台->我的应用->应用信息->高级应用->授权设置->应用回调页面找到。
范围
通过范围,平台将向开发者开放更多微博核心功能,同时加强用户隐私保护,提升用户体验。用户有权在新的 OAuth2.0 授权页面上选择分配给应用程序的功能。
访问令牌
代表用户身份的令牌,用于微博API调用。
网页授权
通过WebView授权,返回Token信息。
SSO 授权
通过调用微博客户端授权并返回Token信息。
使用微博sdk授权分享时,请确保您的AppKey、RedirectURI、Scope、PackageName与开发者官网一致。
功能列表1. 认证授权特别说明:新版sdk去掉了openapi功能(包括获取用户信息等方法),授权后获取用户信息请参考openapi接口文档微博开放平台api,使用自带的网络引擎请求数据2.分享到微博
通过微博SDK,第三方应用可以分享文字、图片、视频:
有微博客户
OpenApi openApi 不再在微博 sdk 中维护。如果要使用OpenApi,请参考开发者网站使用自己的网络访问
运行示例代码
为了方便第三方应用更快地集成微博SDK,更清楚地了解微博SDK提供的功能,我们在GitHub上提供了一个简单的示例工程和对应的APK安装包。
**方法一:**通过adb install命令直接安装app_debug.apk(新建文档文件夹下)**方法二:**在Android Studio中导入并运行weibosdkdemo项目(详见Android微博)平台SDK文档4.1.pdf:运行示例代码)
微博SDK和DEMO项目目录结构及分析
微博SDK目前以部分开源的形式提供给第三方开发者。简而言之,可以分为以下三个部分:
集成前准备1. 申请应用的APP_KEY
在这一步,您需要在微博开放平台上注册您的应用,获取APP_KEY,并添加应用的授权回调页面(Redirect URI)。详情请仔细阅读:手机客户端访问( )
2. 注册的应用包名和签名
您需要在微博开放平台上注册应用程序的包名和签名,才能正确进行授权。
请注意:包名和签名未注册,或签名注册错误,将导致授权失败。
应用包名:指AndroidManifest.xml文件中package标签所代表的内容。
应用签名:签名是官方签名工具生成的MD5值。
详情请参考:微博Android平台SDK文档V4.0pdf:如何使用签名工具获取应用的签名?
3. 集成SDK
1:Android Studio访问修改你项目主模块下的build.gradle文件,添加微博sdk的依赖
allprojects {
repositories {
jcenter()
mavenCentral()
maven { url "https://dl.bintray.com/thelasterstar/maven/" }
}
}
compile 'com.sina.weibo.sdk:core:4.4.3:openDefaultRelease@aar'
或者将新建文档目录下的openDefault-4.4.1.aar复制到工程libs目录下,修改build.gradle文件如下:
repositories{
flatDir {
dirs 'libs'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:24.2.1'
compile(name: 'openDefault-4.4.3', ext: 'aar')
}
2:日食:
将github项目下【eclipse集成】目录下的文件复制到你的项目中
3:差不多
微博sdk aar默认提供[armeabi] [armeabi-v7a] [arm64-v8a]三个平台的so。如果需要适配更多版本的so,请到github->so目录获取所有平台so文件
如果只想引入特定平台,在gradle中配置如下
splits {
abi {
enable true
reset()
include 'armeabi' //根据需求自己修改
universalApk true
}
}
4:关于混淆
-keep class com.sina.weibo.sdk.** { *; }
第三方如何使用(认证授权)1.替换自己应用的APP_KEY等参数
鉴于很多第三方开发者在Demo中直接复制使用Constants类,有必要说明一下第三方开发者需要将Constants类中的各种参数替换为自己应用程序的参数。请仔细阅读代码注释。
public interface Constants {
/** 当前 DEMO 应用的 APP_KEY,第三方应用应该使用自己的 APP_KEY 替换该 APP_KEY */
public static final String APP_KEY = "2045436852";
/**
* 当前 DEMO 应用的回调页,第三方应用可以使用自己的回调页。
* 建议使用默认回调页:https://api.weibo.com/oauth2/default.html
*/
public static final String REDIRECT_URL = "http://www.sina.com";
/**
* WeiboSDKDemo 应用对应的权限,第三方开发者一般不需要这么多,可直接设置成空即可。
* 详情请查看 Demo 中对应的注释。
*/
public static final String SCOPE =
"email,direct_messages_read,direct_messages_write,"
+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
+ "follow_app_official_microblog," + "invitation_write";
}
2. 创建微博API接口类对象
mAuthInfo = new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE);
WbSdk.install(this,mAuthInfo);
其中:APP_KEY、REDIRECT_URL、SCOPE需要替换为第三方应用申请的内容。
3. 实现 WbAuthListener 接口
private class SelfWbAuthListener implements com.sina.weibo.sdk.auth.WbAuthListener{
@Override
public void onSuccess(final Oauth2AccessToken token) {
WBAuthActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
mAccessToken = token;
if (mAccessToken.isSessionValid()) {
// 显示 Token
updateTokenView(false);
// 保存 Token 到 SharedPreferences
AccessTokenKeeper.writeAccessToken(WBAuthActivity.this, mAccessToken);
Toast.makeText(WBAuthActivity.this,
R.string.weibosdk_demo_toast_auth_success, Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void cancel() {
Toast.makeText(WBAuthActivity.this,
R.string.weibosdk_demo_toast_auth_canceled, Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(WbConnectErrorMessage errorMessage) {
Toast.makeText(WBAuthActivity.this, errorMessage.getErrorMessage(), Toast.LENGTH_LONG).show();
}
}
4. 调用方法、认证和授权
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler.authorizeWeb(new WbAuthListener());
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler. authorizeClientSso(new WbAuthListener());
mSsoHandler = new SsoHandler(WBAuthActivity.this);
mSsoHandler. authorize(new WbAuthListener());
以上三个授权需要在Activity的onActivityResult函数中调用如下方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (mSsoHandler != null) {
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
其他功能
其他功能请参考文档:微博Android平台SDK文档V4.1.pdf
使用新浪微博开放平台api同步微博内容至自己网站(想做个简单的实验的内容不对的地方欢迎拍砖)
网站优化 • 优采云 发表了文章 • 0 个评论 • 52 次浏览 • 2022-03-24 11:05
本文来自:转载请注明出处
额,我只是想做一个简单的实验。如果内容有误,请补砖...
只是在这里使用 JSOUP 给出一些想法
我只爬自己的主页和别人的微博主页,没有尝试过其他爬取(抱歉懒...)
第一种是使用JSOUP登录页面
于是我偷懒,用IE的开发者工具来获取cookie。获取的cookie应该写成map的形式,然后使用代码:
Response res=Jsoup.connect("http://weibo.com").cookies(map).method(Method.POST).execute();
String s=res.body();
有很多发现:
您可以编写自己的脚本来打印 map.put(xxx,xxx)
我这里用scala写了一段,用java写没关系:
s.split("; ").foreach(s => {val x=s.split("=");println(s"""map.put("${x(0)}","${x(1)}");""")});
最后的body 嗯……是一堆脚本标签。顶部是微博固定顶栏的内容(导航栏的内容)
lz试了一下,发现我需要的是 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(想做个简单的实验的内容不对的地方欢迎拍砖)
本文来自:转载请注明出处
额,我只是想做一个简单的实验。如果内容有误,请补砖...
只是在这里使用 JSOUP 给出一些想法
我只爬自己的主页和别人的微博主页,没有尝试过其他爬取(抱歉懒...)
第一种是使用JSOUP登录页面
于是我偷懒,用IE的开发者工具来获取cookie。获取的cookie应该写成map的形式,然后使用代码:
Response res=Jsoup.connect("http://weibo.com").cookies(map).method(Method.POST).execute();
String s=res.body();
有很多发现:

您可以编写自己的脚本来打印 map.put(xxx,xxx)
我这里用scala写了一段,用java写没关系:
s.split("; ").foreach(s => {val x=s.split("=");println(s"""map.put("${x(0)}","${x(1)}");""")});
最后的body 嗯……是一堆脚本标签。顶部是微博固定顶栏的内容(导航栏的内容)
lz试了一下,发现我需要的是
使用新浪微博开放平台api同步微博内容至自己网站(使用新浪微博开放平台apiapi同步微博内容至自己网站)
网站优化 • 优采云 发表了文章 • 0 个评论 • 46 次浏览 • 2022-03-23 21:24
使用新浪微博开放平台api同步微博内容至自己网站,每天定时更新一条。我想这应该不属于侵权。当然,你如果要涉及到隐私问题就不好说了。
可以,只要你是个人或者公司,你发的每条微博,都是经过真实的人肉采集传播的,只要你注明,你是人肉传播,或者你是单位,那么,不去采集的人用户的微博都可以自动转化为采集之后的微博。
mgc内容可以使用新浪官方api解析到gallery_web_page.php页面里的链接。然后拿到里面的内容(地址不要写错,不要被新浪解析当成了谷歌地址)用xml或者json都可以。地址最好写为:,详细的api接口参数可以查看以下。不同的地址接口实现都有所不同。百度:gallery_web_page.php[1]地址domdownload"../"也可以直接使用你的githubrepo或者命名的地址。
通过srv之类的扫描引擎可以找到里面的链接,这个链接可以作为参考去拿到你所有被采集过的微博的地址。参考内容如下:mgc链接xml的解析方法。
现在转到自己网站不怎么怕被识别侵权,主要看别人的抓取时间及抓取量。每个可抓取的微博下存在微博账号的集中区,通过ip找到他所在位置,然后抓取他的所有微博,精准识别到他真实身份,不违法。
只要能抓出来账号, 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(使用新浪微博开放平台apiapi同步微博内容至自己网站)
使用新浪微博开放平台api同步微博内容至自己网站,每天定时更新一条。我想这应该不属于侵权。当然,你如果要涉及到隐私问题就不好说了。
可以,只要你是个人或者公司,你发的每条微博,都是经过真实的人肉采集传播的,只要你注明,你是人肉传播,或者你是单位,那么,不去采集的人用户的微博都可以自动转化为采集之后的微博。
mgc内容可以使用新浪官方api解析到gallery_web_page.php页面里的链接。然后拿到里面的内容(地址不要写错,不要被新浪解析当成了谷歌地址)用xml或者json都可以。地址最好写为:,详细的api接口参数可以查看以下。不同的地址接口实现都有所不同。百度:gallery_web_page.php[1]地址domdownload"../"也可以直接使用你的githubrepo或者命名的地址。
通过srv之类的扫描引擎可以找到里面的链接,这个链接可以作为参考去拿到你所有被采集过的微博的地址。参考内容如下:mgc链接xml的解析方法。
现在转到自己网站不怎么怕被识别侵权,主要看别人的抓取时间及抓取量。每个可抓取的微博下存在微博账号的集中区,通过ip找到他所在位置,然后抓取他的所有微博,精准识别到他真实身份,不违法。
只要能抓出来账号,
使用新浪微博开放平台api同步微博内容至自己网站(微博开放平台升级推出新版微博分享接口/upload分享链接)
网站优化 • 优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-03-21 07:25
为应对黑行业利用微博开放界面刷话题、普及的现状,对微博开放平台进行了升级,并推出了新版微博分享界面。新的分享界面如下:
statuses/share 第三方微博分享链接(点击链接查看接口文档)
第三方开发者需要升级切换原来的分享界面,转发微博到上面的新分享界面。原来需要升级的接口有:
statuses/repost 转发微博
statuses/update 发布微博
statuses/upload 上传图片和发微博
statuses/upload_url_text 发一条微博并指定上传的图片
statuses/destroy 删除微博
第三方开发者必须在2017年6月30日前完成升级和切换工作。之后,原微博分享转发接口将受到限制。
如果第三方开发者需要更丰富的分享功能,微博开放平台推荐开发者使用微博SDK中集成的分享功能,实现对微博的完整分享。
微博SDK:
iOS - /sinaweibosdk/weibo_ios_sdk
安卓 - /sinaweibosdk/weibo_android_sdk
个人参考 查看全部
使用新浪微博开放平台api同步微博内容至自己网站(微博开放平台升级推出新版微博分享接口/upload分享链接)
为应对黑行业利用微博开放界面刷话题、普及的现状,对微博开放平台进行了升级,并推出了新版微博分享界面。新的分享界面如下:
statuses/share 第三方微博分享链接(点击链接查看接口文档)
第三方开发者需要升级切换原来的分享界面,转发微博到上面的新分享界面。原来需要升级的接口有:
statuses/repost 转发微博
statuses/update 发布微博
statuses/upload 上传图片和发微博
statuses/upload_url_text 发一条微博并指定上传的图片
statuses/destroy 删除微博
第三方开发者必须在2017年6月30日前完成升级和切换工作。之后,原微博分享转发接口将受到限制。
如果第三方开发者需要更丰富的分享功能,微博开放平台推荐开发者使用微博SDK中集成的分享功能,实现对微博的完整分享。
微博SDK:
iOS - /sinaweibosdk/weibo_ios_sdk
安卓 - /sinaweibosdk/weibo_android_sdk
个人参考