android - 如何在 android 中使用社交身份验证访问 facebook 好友列表?

标签 android facebook list socialauth

我正在使用社交身份验证库进行 facebook 集成。我可以分享/发布文本或图片,但我想访问我的 friend 列表。

是否可以在 android 中通过社交身份验证访问好友列表?

提前致谢...

最佳答案

我正在使用 socialauth 获取 Facebook 中的好友列表。他们有更多关于他们的最新信息 github page wiki .下面的代码是我对 wiki 中示例的改编。我正在获取姓名、个人资料图片和 Facebook id。

在我的 fragment 中:

public class Friends extends SherlockFragment {
 private static SocialAuthAdapter facebookAdapter;

我设置了适配器

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    facebookAdapter = new SocialAuthAdapter(new FacebookListener());

稍后在 onCreateView 中我授权用户

facebookAdapter.authorize(getSherlockActivity(), Provider.FACEBOOK);

现在我实现了第一个监听器(他们授权了吗)

private final class FacebookListener implements DialogListener 
    {
        public void onComplete(Bundle values) {

            Log.d("SocialAuth","Successful");
            facebookAdapter.getUserProfileAsync(new FacebookProfileDataListener());
            Toast.makeText(getSherlockActivity(),"Connection Successful",Toast.LENGTH_LONG).show();


        }

        @Override
        public void onError(SocialAuthError error) {
            Log.d("Custom-UI" , "Error");
        }

        public void onCancel() {
            Log.d("Custom-UI" , "Cancelled");
        }

        @Override
        public void onBack() {
            // TODO Auto-generated method stub

        }


    }

现在我得到了个人资料

public final class FacebookProfileDataListener implements org.brickred.socialauth.android.SocialAuthListener<Profile>  {

        @Override
        public void onError(SocialAuthError arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onExecute(String arg0, Profile profile) {
            if (profile.getProviderId().equalsIgnoreCase(Provider.FACEBOOK.name())) {
                //store some of the profile information here
            }
            facebookAdapter.getContactListAsync(new FacebookContactDataListener());   
        }

    }

现在是联系人列表

  public final class FacebookContactDataListener implements SocialAuthListener<List<Contact>> {

@Override
public void onError(SocialAuthError arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onExecute(String arg0, List<Contact> t) {
    List<Contact> contactList = t;
    JSONArray listOfIds = new JSONArray();

    for (Contact c: contactList) {
        listOfIds.put(c.getId());
    }
    AppDataManager manager = AppDataManager.getInstance(getSherlockActivity());
        manager.setFacebookFriendsIds(listOfIds);
        manager.setFacebookFriends(contactList);

}

}

此时我有一个可以使用的列表。

关于android - 如何在 android 中使用社交身份验证访问 facebook 好友列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20634328/

相关文章:

python - 循环似乎不遵循顺序

Android AsyncTask 不返回正确的结果

android - 如何共享 debug.keystore?

ios - 如何在ios中获取facebook用户 friend 的电子邮件ID

php - Facebook PHP SDK : $facebook->getUser() sometimes returning 0

python - 列出 1-50 范围内的 50 个随机数,使得相邻数字彼此不在 15 以内

list - 带有部分的 SwiftUI 动态列表未正确布局

android - 如何以编程方式查找 Android 版本名称?

android - 为每个 fragment 更改 QueryUtils 中的值

javascript - 通过 Javascript 的 Facebook 连接不会关闭,也不会传递 session ID