使用新浪微博开放平台api同步微博内容至自己网站(新浪微博开放平台做个实践,开发一个功能简单的android客户端)
优采云 发布时间: 2021-09-17 07:06使用新浪微博开放平台api同步微博内容至自己网站(新浪微博开放平台做个实践,开发一个功能简单的android客户端)
导言
我最近不太忙。我花了一些时间学习Android应用程序开发。经过两周的学习,我还编写了许多演示示例,可以从基本控件和基本*敏*感*词*效果的示例演示集合中播放,并不断更新和下载
从本周开始,我们将以新浪微博开放平台为例,开发一个简单的安卓客户端,它将尽可能地改进功能
今天的内容
上图是客户端的主界面。目前,只获得了前20个数据。也可以单击“刷新”刷新数据。功能相对简单
操作系统是android2.2.
使用的技术点包括listview、自定义listadapter、与多线程相关的消息、处理程序、与身份验证相关的OAuth以及用户映像的异步加载
新浪微博的验证使用了signpost的OAuth组件,而不是微博的SDK
源代码下载:
关于OAuth身份验证
OAuth是目前流行的授权方案。twitter、Facebook和Google等大型网站开放平台支持OAuth认证模式。新浪微博、腾讯微博、163微博等国内开放平台也纷纷支持这种认证模式
参考维基百科
“OAuth是一种开放标准,允许用户允许第三方应用程序访问用户在网站上放置的私有资源,而无需将用户名和密码传递给第三方应用程序。OAuth允许用户提供令牌而不是用户名和密码来访问存储在特定服务提供商中的数据。”
例如:
用户a在服务提供商B上存储一些资源。B支持OAuth授权模式。a是B上的注册用户,具有用户名和密码。您可以使用用户名和密码登录B以查看您的资源。假设存在应用程序C。使用C时,用户a需要在B上存储自己的资源。有两种方法可以把你的资源放在B和C上
此时,C可以使用B打开的OAuth授权机制。当用户a想要在B上显示资源时,C将跳转到B的身份验证页面。用户将在B的页面上输入用户名和密码。通过后,它将询问用户是否为C应用程序开发相关资源。用户可以自定义C可以访问的资源,然后跳回C应用程序。这样,就不需要担心用户名和密码,也不需要同时存储多个资源
您可以通过以下网站details学习OAuth的具体技术细节
从上图可以看出,实际流程分为两部分:使用者和提供者。在本例中,使用者是C应用程序,提供者是B服务提供者
使用OAuth进行身份验证和授权的过程如下:
用户访问客户端的网站并希望操作用户在服务提供商中存储的资源。客户端向服务提供商请求一个临时令牌。服务提供商对客户端进行身份验证后,将授予一个临时令牌。在获得临时令牌后,客户端将用户引导至授权方请求用户授权的服务提供商的授权页面。在此过程中,客户端的临时令牌和回调连接被发送给服务提供商。用户在服务提供商的网页上输入用户名和密码,然后授权客户端访问请求的资源。成功授权后此时,服务提供商引导用户返回到客户端的网页。客户端根据临时令牌从服务提供商处获取访问令牌。服务提供商根据临时令牌和用户的授权授予客户端访问令牌。客户端使用获取的访问令牌访问pr存储在服务提供程序上的受保护资源
新浪微博的OAuth
借用新浪微博OAuth验证流程图
当我们在新浪微博开放平台上创建一个新的应用程序时,我们会为新的应用程序分配一个密钥和密码,即consumerkey和ConsumerCret。通过这两件事,我们去请求令牌,然后将用户重定向到新浪微博平台的授权页面。授权后,根据回调,URL是一个地址ss,我们再次使用request uGet access with token uToken,以后需要通过access token访问开放平台提供的待验证接口
当然,那些不需要验证就可以访问的接口也可以通过密钥直接访问,具体请参考开放平台提供的API文档
腾讯微博和163微博的开放平台在原则和实施上都是相似的
packagecom.sinaweibo2
importoauth.signpost.OAuthConsumer
importoauth.signpost.OAuthProvider
monshttp.CommonHttpOAuthConsumer
monshttp.CommonHttpOAuthProvider
importoauth.signpost.exception.OAuthCommunicationException
ImportToAuth.signpost.exception.OAutheExpectationFailedException
importoauth.signpost.exception.oauthmessagesignereexception
importoauth.signpost.exception.OAuthNotAuthorizedException
publicclassOAuth{
私人消费者
私有OAuthProvider
publicstaticfinalString回调_URL=“sinaweibo2://weibolistativity”
publicstaticfinalString CONSUMER_KEY=“1849239616”
publicstaticfinalString CONSUMER_SECRET=“B2137BF782BF6CAE004B8A8394D5D5D6D6”
publicstaticfinalString请求_TOKEN_URL=“”
publicstaticfinalString访问权_令牌_URL=“”
publicstaticfinalString AUTHORIZE_URL=“”
publicOAuth(){
}
publicString RetrieveAuthUrl()通过OAuthMessageSignerException
OAuthNotAuthorizedException,OAuthExpectationFailedException
OAuthCommunicationException{
mConsumer=newcommMonsHttpOAuthConsumer(消费者密钥,消费者密钥)
mProvider=newCommonsHttpOAuthProvider(请求\u令牌\u URL
访问\u令牌\u URL,授权\u URL)
String authUrl=mProvider.retrieveRequestToken(mConsumer,CALLBACK\u URL)
returnauthUrl
}
publicvoidRetrieveAccessToken(字符串验证器)
通过OAuthMessageSignerException、OAuthNotAuthorizedException、
OAuthExpectationFailedException,OAuthCommunicationException{
mProvider.setOAuth10a(正确)
mProvider.retrieveAccessToken(mConsumer,验证器)
OAuthUser.USER_ID=mProvider.getResponseParameters().getFirst(“用户ID”)
OAuthUser.ACCESS_TOKEN=mConsumer.getToken()
OAuthUser.ACCESS_TOKEN_SECRET=mConsumer.getTokenSecret()
}
}
更*敏*感*词*
接下来,将改进两个主要功能,一个是分页浏览,另一个是微博
将来,它可能支持实际功能,如图片发布
还有UI美化和性能优化
总结
我在学习过程中读了两本书,pro.Android2.pdf和professional.android2.Application.Development.(Wrox,.2010,。0470565527).PDF,是非常好的介绍性书籍。我还没有读完所有的书。读完大部分书后,我会边读边写一个演示
同时,我每天去论坛,EOE的开发者门户,回答问题,解决问题,提出问题和发表文章。总之,我锻炼自己,强迫自己锻炼基础和思考
论坛上有很多中文PDF教程,但发现大部分都是从Android开发者中心的开发指南和资源中翻译过来的。因此,如果英语不是很差,建议直接阅读以上两部分,同时练习示例,以确保你能取得很好的进步两周后
参考资料
Technorati标签:Android、开放平台、OAuth、新浪微博