代码之家  ›  专栏  ›  技术社区  ›  Muhammad Ibrahim

无法使用Facebook图形API获取用户配置文件图片

  •  0
  • Muhammad Ibrahim  · 技术社区  · 7 年前

    我的Angular2应用程序使用Facebook登录来获取用户名、电子邮件和个人资料图片。我可以获取用户名和电子邮件,但Facebook API提供的个人资料图片的URL不起作用。

    这是应用程序的流程

    1. 用户从我的应用程序登录到Facebook,并有权查看姓名、电子邮件和个人资料图片。
    2. 登录后,应用程序使用Facebook API请求姓名、电子邮件和个人资料图片。
    3. 应用程序从包含以下所有请求数据的Facebook API获取响应示例

    response : { email:"user@mail.com" id:"992219737612453" name:"user name" picture: { data:height:50 is_silhouette:false url:"https://lookaside.facebook.com/platform/profilepic/? asid=992219737612453&height=50&width=50&ext=1527274398 &hash=AeQwwpehQqNhgVxr" width:50 } }

    但问题是,上面给出的图片响应中的URL不起作用,并给出错误429。但相同的URL在使用VPN访问时开始工作。任何人都请弄清楚问题是什么以及如何解决。 注意:429错误代表请求太多,但在Facebook开发者仪表板页面上,它表示你的应用还没有达到速率限制的水平。

    更新:当使用属于中国的特定ISP访问URL时,它被阻止。但问题是我的大多数用户都使用那个互联网服务提供商。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Muhammad Ibrahim    7 年前

    如问题所述,这是一个互联网服务提供商的问题,其工作/来源是中国。因此,您将需要来自任何区域或URL工作区域的中性ISP。

    这个问题的唯一解决方案是,您应该在不同的ISP上安装一个服务器(对于Angular2/4,ExpressBestOption)。服务器从该URL获取图像并将其返回给客户机。

    错误的架构:

    客户机============================================gt;包含映像的服务器

    客户机<=======429错误(由于ISP不同)<=======包含映像的服务器

    正确的架构:

    角度 ================> 快车 =======> 包含映像的服务器

    角度 <(=) 快车 <===== 包含映像的服务器

        2
  •  0
  •   nyarasha    7 年前

    如果在VPN上工作,这听起来像是权限问题。VPN允许运行的本地计算机或服务器没有哪些权限?