gpt4 book ai didi

facebook - 尝试使用 Facebook 测试用户 login_url 时出现 404 错误

转载 作者:行者123 更新时间:2023-11-30 05:27:21 24 4
gpt4 key购买 nike

如果我以编程方式创建一个 Facebook test user ,新用户的 login_url 不起作用。提取 login_url 返回 404 错误。

精简示例(在 Python 中)。最后两行是出现问题的地方:

import requests
from urlparse import parse_qs
APP_ID = "<Facebook App ID>"
APP_SECRET = "<Facebook Client Secret>"

# Get app access token - this works
response = requests.get('https://graph.facebook.com/oauth/access_token',
params={'grant_type': "client_credentials",
'client_id': APP_ID, 'client_secret': APP_SECRET})
app_access_token = parse_qs(response.content)['access_token'][0]

# Create test user - this works
response = requests.post('https://graph.facebook.com/%s/accounts/test-users' % APP_ID,
data={'access_token': app_access_token, 'installed': "true"})
test_user = response.json()
login_url = test_user['login_url']
print login_url # http://developers.facebook.com/checkpoint/test-user-login/...

# Get cookied for login - see https://stackoverflow.com/a/5370869/647002
session = requests.Session()
session.get("https://www.facebook.com/", allow_redirects=True)

# Login test user - THIS FAILS
response = session.get(login_url)
print response.status_code # 404

Others have noted你必须 first fetch the Facebook homepage在测试用户的 login_url 起作用之前。我们遇到了同样的问题,我已经在上面包含了这个解决方法,但没有任何运气。 [编辑:添加了 _fb_noscript=1 查询参数,从 2015 年年中开始要求非 JavaScript 测试客户端。] [编辑 8/2017:现在删除了 _fb_noscript=1;不再需要,并设置一个 noscript cookie,使一些后来的 FB 身份验证请求返回 500。]

我也试过直接在浏览器中打开 login_url:

  • 如果我没有登录 Facebook,我会看到一个通用的 Facebook 404 页面。
  • 如果我已经登录到我的开发者帐户,Facebook 会警告我将作为平台测试用户登录,然后允许我进入测试用户的帐户。

最后一点似乎确认测试用户正在正确创建并且我有正确的 login_url。但是,当然,这对自动化测试没有帮助。 (我们不想运行登录到我的开发者帐户的测试。)

是否有其他方法可以将测试用户的 login_url 用于自动化测试?

最佳答案

Facebook 开发人员支持工程师 has confirmed由于安全更改,测试用户 login_url 不能再用于测试用户的自动登录。显然它是用于手动测试的。

不过,我能够通过发布到 Facebook 的正常登录表单来实现以编程方式创建的 Facebook 测试用户的自动登录。似乎您只需要从 create-test-user API 返回的电子邮件和密码。 (似乎不需要其他登录表单字段,但您仍然需要先获取 cookie。)

下面的代码现在对我有用(替换原始问题中最后两行“这失败”的代码):

# Login test user - THIS WORKS
response = session.post("https://www.facebook.com/login.php",
data={'email': test_user["email"],
'pass': test_user["password"]})
print response.status_code # 200

我没有在任何地方找到这个记录,Facebook 将来可能会更改他们的登录表单,所以 YMMV。

关于facebook - 尝试使用 Facebook 测试用户 login_url 时出现 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22583963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com