我遇到的问题是,在为年龄限定的“超过18个”帐户请求数据时,来自任何EC2服务器的API端点请求都失败了。请注意,“常规帐户”的所有其他请求都可以正常运行。在这种情况下,它是针对酒类品牌的Instagram数据的请求,请求是:
curl "https://api.instagram.com/v1/users/312026314?access_token=XXX"
在本地和非EC2托管服务器上,我得到了预期的结果:
{"data": {"id": "312026314", "username": "jackdaniels_us", "profile_picture": "https://scontent.cdninstagram.com/t51.2885-19/s150x150/12519626_1324106037616151_2073859628_a.jpg", "full_name": "Jack Daniel's", "bio": "Live Freely. Drink Responsibly. For legal drinking age only. Bit.ly/PostGuide_EN. TN Whiskey, 40% ABV. JD Distillery, Lynchburg, TN. \u00a9\u00ae 2017", "website": "http://www.jackdaniels.com/", "is_business": true, "counts": {"media": 687, "follows": 16, "followed_by": 275149}}, "meta": {"code": 200}}
但是在任何EC2服务器上我得到以下响应:
{"meta": {"code": 400, "error_type": "APINotFoundError", "error_message": "this user does not exist"}}
请注意,我已经在Instagram帐户中标记了访问令牌在这里被用作“超过18”。我已经尝试强制IP地址匹配'工作服务器'上使用的IP地址,并强制HTTP版本匹配。我也尝试过来自不同地点的EC2服务器的请求,结果相同。这似乎是所有EC2服务器对Instagram年龄门控帐户的一揽子阻止。
此问题是否有已知原因或建议的解决方案?
(或者关于如何缩小问题的任何建议?
我可能会使用代理来处理这些失败的400个请求,但它为项目添加了一层复杂性,我宁愿避免。谢谢你的帮助。
答案 0 :(得分:0)
管理得到答案。
如果您使用的是AWS EC2,并且您正在使用Instagram API执行与酒类品牌相关的请求(年龄限制的请求),则正在使用的访问令牌必须属于Instagram帐户,链接到Facebook帐户。
有两种方法可以将您的Instagram帐户标记为超过18种:通过链接到Facebook间接或通过Instagram应用程序在移动应用程序中提示您,当您尝试查看年龄门控帐户时。
在我的情况下,Instagram帐户的访问令牌被用于请求,通过应用程序内提示被称为“超过18”。他们没有链接到Facebook帐户。在将这些帐户链接到Facebook个人资料后,对超过18个帐户的请求立即生效。
澄清一下,'Facebook链接'年龄门控方法似乎只是对来自EC2的请求的严格要求。对于非AWS托管服务器或本地开发设置,“应用内”方法就足够了。
这是怎么回事?通过使用恰好与Facebook链接的帐户进行测试,看到EC2的请求工作 - 然后通过工作帐户与我测试过的帐户不同的各种方式。