通过 OAuth 访问社会网络 Web 站点,第 1 部分: 构建支持 OAuth 的桌面 Twitter 客户端
2010-04-12 00:00:00 来源:WEB开发网清单 2. MyTtDesktopClient 的输出
Open the following URL and grant access to your account:
http://twitter.com/oauth/authorize?oauth_token=matzsp0Q8k5GfhX2DQoQaHEipBH3g3ieqzPg5QyYek
Copy the PIN displayed in your browser, then hit ENTER:
1944867
Storing access token for 23741179...Done
Successfully updated the status for user with ID 23741179 to [Studying OAuth].
图 4. 由 MyTtDesktopClient 更新的 Twitter 状态
查看原图(大图)
注意,在 清单 1 中,在更新 Twitter 状态之前,通过调用 storeAccessToken 方法存储了访问令牌。这是因为目前 Twitter 的访问令牌还没有到期。所以在用户返回并使用我们的客户端时无需再次授权访问。这样就改善了用户体验。在本例中,用户的访问令牌以纯文本文件的形式存储,它还可以在将来重用。看一下源代码(可在 下载 部分获得)中的 storeAccessToken 和 loadAccessToken 方法。名为 updateStatus(int userId, String status) 的新更新方法使用了存储的访问令牌(参见 清单 3)。在 main 方法中,为行 tt.updateStatus("Studying OAuth"); 添加注释,并取消行 tt.updateStatus(23741179, "Studying OAuth again"); 的注释。使用您自己的 Twitter ID 替换 23741179。重新编译并运行代码,您就会发现,现在无需执行上述授权流程就可以更新自己的 Twitter 状态。
清单 3. 类 myttdesktopclient.OAuthTwitterClient 的 updateStatus(int userId, String status) 方法
public void updateStatus(int userId, String status)
throws TwitterException, IOException {
Twitter twitter = new Twitter();
twitter.setOAuthConsumer(consumerKey, consumerSecret);
AccessToken accessToken = loadAccessToken(userId);
twitter.setOAuthAccessToken(accessToken);
Status twitterStatus = twitter.updateStatus(status);
System.out.println("Successfully updated the status for user with ID "
+ userId + " to [" + twitterStatus.getText() + "].");
}
结束语
在本系列的第一篇文章中,我介绍了 OAuth 协议。通过示例应用程序 MyTtDesktopClient,我们了解了使用 OAuth 的基本元素。这里的特别之处在于用户的服务提供商凭证(Twitter 用户名和密码)不会泄漏给使用者 MyTtDesktopClient。在本系列的第 2 部分,我将演示如何开发更实用的 Web 应用程序,以支持用户通过 OAuth 与 Twitter 进行通信。
本文示例源代码或素材下载
更多精彩
赞助商链接