我正在使用社交身份验证库进行 facebook 集成。我可以分享/发布文本或图像,但我想访问我的朋友列表。
是否可以通过 android 中的社交身份验证访问好友列表?
提前致谢...
我正在使用社交身份验证库进行 facebook 集成。我可以分享/发布文本或图像,但我想访问我的朋友列表。
是否可以通过 android 中的社交身份验证访问好友列表?
提前致谢...
我正在使用 socialauth 来获取 Facebook 中的朋友列表。他们在github 页面 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);
现在我实现了第一个监听器(他们授权了吗)
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);
}
}
此时我有一个可以使用的列表。
https://developers.facebook.com/tools/
使用 Graph Api 搜索。
https://graph.facebook.com/YOUR_ID?fields=friends,将向您显示整个朋友列表。
https://graph.facebook.com/YOUR_ID?fields=friendlists,只会显示 25 个朋友。
这是正确的答案:将其添加到您的 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以获取有关权限的更多信息。