如何通过 ContactsContracts API 从用户那里获取 facebook id?
Posted
技术标签:
【中文标题】如何通过 ContactsContracts API 从用户那里获取 facebook id?【英文标题】:How to get the facebook id from a user through the ContactsContracts API? 【发布时间】:2011-05-28 04:57:30 【问题描述】:我将我的地址簿与 facebook 同步,现在可以通过我的地址簿访问我的 facebook 个人资料。 我想从另一个应用程序读取连接到帐户的 facebook 数据并获取同步用户的 facebook id。
我在 ContactContracts.Data 表中找不到包含与 facebook 相关的内容的 mimetype 或数据字段。有人成功过吗?
Facebook 似乎以某种方式限制了对这些数据的权限。这是如何完成的,我需要哪些权限才能访问在通讯录中同步的 facebook 联系信息?
【问题讨论】:
好像facebook限制了这个数据的权限。 【参考方案1】:如果用户的联系人中有该信息,那么他们也是该人在 facebook 上的朋友。只需使用图形 api 并获取朋友列表并使用选择的联系人姓名过滤他们,或者让用户从由 facebook api 查询的返回名称组成的列表视图中进行选择。
try
JSONObject response = Util.parseJson(facebook.request(
"/me/friends", new Bundle(), "GET"));
JSONArray jArray = response.getJSONArray("data");
for (int i = 0; i < jArray.length(); i++)
JSONObject json_data = jArray.getJSONObject(i);
tempMap = new HashMap<String, Object>();
tempMap.put("friend", json_data.getString("name"));
tempMap.put("id", json_data.getString("id"));
friendlist.add(tempMap);
catch (MalformedURLException e)
e.printStackTrace();
catch (JSONException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
catch (FacebookError e)
e.printStackTrace();
【讨论】:
当然这是可能的,但工作量要大得多,然后只需查看联系人 api。并且 facebook 可以更好地与地址簿中的用户合并,因为它可以访问我朋友的私人数据,例如他们的电子邮件地址。 在您的问题中,您说想要该用户的 facebook 信息...您可以将 id 传回并以 JSON 格式获取所有信息并进入“数据”。也许您可以更清楚地了解您正在寻找哪些作品。如果您只想要电子邮件,还有更好的方法。 我想访问我的通讯录中属于某个用户的 facebook id。由于 facebook 已经为我合并了 facebook 上的地址簿条目和朋友,我想通过联系人 API 而不是 facebook graph API【参考方案2】:您还可以考虑使用 gigya.com 提供的 API 和 android SDK(我最近一直在那里工作)。
【讨论】:
【参考方案3】:似乎直到现在这对官方 API 来说是不可能的,因为这个 exception 是由 google 为 facebook 应用程序制作的。我希望 facebook 在其下一个版本中符合官方的 android API。
【讨论】:
以上是关于如何通过 ContactsContracts API 从用户那里获取 facebook id?的主要内容,如果未能解决你的问题,请参考以下文章