【问题标题】:how to access facebook friends list using social auth in android?如何在 android 中使用社交身份验证访问 facebook 好友列表?
【发布时间】:2013-12-17 12:36:39
【问题描述】:

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

android中是否可以通过社交认证访问好友列表?

提前谢谢...

【问题讨论】:

标签: android facebook list socialauth


【解决方案1】:

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

在我的片段中:

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);

现在我实现了第一个 Listener(他们是否授权)

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);

}

}

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

【讨论】:

  • 谢谢,帮了我很多,
【解决方案2】:

https://developers.facebook.com/tools/

使用 Graph Api 搜索。

https://graph.facebook.com/YOUR_ID?fields=friends,会显示你的朋友列表。

https://graph.facebook.com/YOUR_ID?fields=friendlists,只会显示 25 个朋友。

【讨论】:

  • 感谢@Thushar,有没有使用社交身份验证访问朋友列表的示例?我正在使用这个库 code.google.com/p/socialauth-android。
【解决方案3】:

这是正确答案:将其添加到您的 oauth_consumer.properties 文件中,在包含 graph.facebook.com.consumer_secret 的行下:

graph.facebook.com.custom_permissions = user_friends

read_friendlists,具体取决于您真正需要的权限。

查看https://developers.facebook.com/docs/facebook-login/permissions/v2.0 了解有关权限的更多信息。

【讨论】:

    猜你喜欢
    • 2015-04-16
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多