【问题标题】:Facebook graph api can't get user public profileFacebook graph api无法获取用户公开资料
【发布时间】:2019-11-24 21:59:15
【问题描述】:

我已经在我的应用程序中实现了社交身份验证,并且我成功获得了访问令牌。 但是当我使用该访问令牌来获取用户的公开资料时,我只得到用户的 ID 和用户名。 我无法获取用户的其他属性,例如用户的个人资料图片。

当我尝试这个时:

Json = await httpClient.GetStringAsync($"https://graph.facebook.com/v5.0/{userWithOnlyId.Id}?access_token={accessToken}");

我只得到用户的 ID 和姓名。

当我按照this facebook doc 中的说明执行此操作时:

await httpClient.GetStringAsync(
            $"https://graph.facebook.com/me?fields=profile_pic&access_token={accessToken}");

我收到 403 禁止错误。

是不是我做错了什么?我已经尝试了我在 stackoverflow 上找到的几件事,但到目前为止我还没有解决方案。

【问题讨论】:

  • 您链接到的文档用于获取用户的基本信息,当他们向您的 Facebook 机器人/页面发送消息时。我们甚至在这里谈论这种情况吗?当您说您在应用程序中实现了社交身份验证时,我会假设我们正在谈论普通的 Graph API 用户配置文件,而不是信使。 developers.facebook.com/docs/graph-api/reference/user

标签: c# facebook-graph-api facebook-authentication


【解决方案1】:

有一个例子(部分:检索个人资料):

https://graph.facebook.com/<PSID>?fields=first_name,last_name,profile_pic&access_token=<PAGE_ACCESS_TOKEN>

您似乎需要提供 PSID

ASID(App-scoped ID) - 这是每个应用程序唯一的用户 ID。

这意味着这个用户对于每个应用程序都有不同的 ASID。我认为您只有一个应用程序。

要从应用范围的 ID 获取页面范围的 ID,请发送 POST 请求到 /pages_id_mapping 根节点

【讨论】:

  • 您好,感谢您的回复。 psid 你的意思是用户ID?
  • 对不起,如果我的问题有点愚蠢,但是我阅读了您发送的文档,但没有找到从哪里获取 PSID,您能告诉我从哪里可以得到它吗?跨度>
  • 谢谢,我正在尝试
  • 我一直在尝试上述方法,但它似乎只适用于 facebook 页面。原因,我收到此错误响应:“必须使用页面访问令牌调用此方法”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-08
  • 1970-01-01
相关资源
最近更新 更多