65.9K
CodeProject 正在变化。 阅读更多。
Home

在Android中获取Facebook和Twitter的相册

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (6投票s)

2013 年 11 月 21 日

MIT

2分钟阅读

viewsIcon

20186

在 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 密钥和密钥:

集成 SDK

现在我们可以开始集成 SDK,可以从 http://code.google.com/p/socialauth-android 下载。该 SDK 包含 Java 库,这些库执行 OAuth 的繁重工作,以及每个社交提供商的 REST 调用。提取内容,我们就准备好了。

  • libs/socialauth-android-3.0.jarlibs/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

© . All rights reserved.