在Android中获取Facebook和Twitter的相册






4.50/5 (6投票s)
在 Android 中获取 Facebook 和 Twitter 的相册。
背景
在 Android 中创建照片应用时,经常需要访问 Facebook 和 Twitter 的相册。虽然有 SDK 提供这些功能,但它们的实现比较繁琐。有一个易于使用的开源 SDK,它不仅可以与 Facebook 和 Twitter 集成,还可以与多个社交网络集成。这个 SDK 就是 SocialAuth Android SDK。该 SDK 帮助你以简单的方式从 Facebook 和 Twitter 获取相册,并提供示例。
Facebook 将所有发布的图片以相册的形式存储,但 Twitter 不支持这种机制。因此,对于 Twitter,API 会搜索你关注的人的最近 100 条推文,并为它们创建一个相册。例如,假设你关注了 Maxim。API 将创建一个名为 Maxim 的相册,并将 Maxim 发布的所有图片加载到该相册中。
入门
首先,你需要向你想要集成的社交提供商注册你的应用程序,并获取 API 密钥和密钥。以下链接将帮助你获取 API 密钥和密钥:
- Facebook: http://code.google.com/p/socialauth-android/wiki/Facebook
- Twitter: http://code.google.com/p/socialauth-android/wiki/Twitter
集成 SDK
现在我们可以开始集成 SDK,可以从 http://code.google.com/p/socialauth-android 下载。该 SDK 包含 Java 库,这些库执行 OAuth 的繁重工作,以及每个社交提供商的 REST 调用。提取内容,我们就准备好了。
- 将 libs/socialauth-android-3.0.jar 和 libs/socialauth4.3 jar 复制到应用程序的 libs 文件夹中。如果你使用的是最新的 ADT,jar 文件将自动添加到你的构建路径中,否则你需要手动将 jar 文件添加到构建路径中。我们建议你升级到最新的 ADT。
- 将 assets/oauth_consumer.properties 文件复制到应用程序的 assets 文件夹中。该文件由 SDK 用于密钥和密钥。用上面获取的密钥和密钥替换默认密钥和密钥。
- 在 manifest 中添加 android.permission.INTERNET 和 android.permission.ACCESS_NETWORK_STATE。
这就是你开始所需的一切。SDK zip 文件还包含代码示例,可以帮助你继续编码。
代码
初始化
初始化 SocialAuthAdapter 对象并创建一个 Facebook /Twitter 按钮。单击按钮时,授权适配器。代码演示了如何为 Twitter 授权适配器。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
adapter = new SocialAuthAdapter(new ResponseListener());
twitter_button = (Button)findViewById(R.id.fb_btn);
twitter_button.setBackgroundResource(R.drawable.twitter);
twitter_button.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
adapter.authorize(ProviderUI.this, Provider.TWITTER);
}
});
}
获取用户相册
身份验证后,你将在 ResponseListener 中收到响应。你可以在此处通过 getAlbumsAsync()
方法启动调用以获取用户相册,并在 albumDataListener
中接收响应。你可以获取相册名称、封面照片、照片数量、以及带有名称和 URL 的图片数组。
private final class ResponseListener implements DialogListener
{
public void onComplete(Bundle values) {
adapter.getAlbumsAsync(new AlbumDataListener());
}
// To receive the album response after authentication
private final class AlbumDataListener implements SocialAuthListener<List<Album>>
{
@Override
public void onExecute(List<Album> t) {
Log.d("Custom-UI", "Receiving Data");
List<Album> albumList = t;
if (albumList != null && albumList.size() > 0) {
// Get Photos inside Album
for (Album a : albumList) {
Log.d("Custom-UI", "Album ID = " + a.getId());
Log.d("Custom-UI", "Album Name = " + a.getName());
Log.d("Custom-UI", "Cover Photo = " + a.getCoverPhoto());
Log.d("Custom-UI", "Photos Count = " + a.getPhotosCount());
photosList = a.getPhotos();
if (photosList != null && photosList.size() > 0) {
for (Photo p : photosList) {
Log.d("Custom-UI", "Photo ID = " + p.getId());
Log.d("Custom-UI", "Name = " + p.getTitle());
Log.d("Custom-UI", "Thumb Image =" + p.getThumbImage());
Log.d("Custom-UI", "Small Image =" + p.getSmallImage());
Log.d("Custom-UI", "Medium Image =" + p.getMediumImage());
Log.d("Custom-UI", "Large Image = " + p.getLargeImage());
}}
}}
相同的代码也适用于 Facebook。你只需要使用 Provider.Facebook 来从 Facebook 加载相册。
下载
要下载 SDK 和示例,请访问:http://code.google.com/p/socialauth-android。