1

我编写了一个桌面应用程序,它保存 FB 应用程序数据并列出测试用户。我想打开一个带有新配置文件的浏览器(浏览器配置文件,而不是 FB,因为 PHP facebook API 中的会话问题 - 我不想在我的域上的应用程序会话中)。

但问题是,facebook 登录 URL 是否正常工作。我试过 Firefox 和 Chrome。

Firefox 带有-no-remote, -p "RANDOM_PROFILE", 并-CreateProfile在执行之前执行以使用该配置文件打开 url。

Chrome with --profile-directory="RANDOM_DIR"(之前创建的目录)。

管理浏览器配置文件在两种浏览器中都很好用。但在大多数情况下,使用 Facebook 测试用户登录 URL 打开浏览器,只会将我重定向到主页。

另外,我创建了一些 PHP 页面:

  • 一个在一段时间后通过 window.location 重定向到登录 URL
  • 一个在睡眠后通过 header('Location: ...') 重定向到登录 url
  • 一个带有<a href...>标签的登录网址。

第三个选项是唯一一个有效的选项,但它在大约 20% 的情况下有效(有时在该链接上单击多次并在新选项卡中多次打开有效)

如何使用 facebook 登录 URL 启动新的浏览器实例,其中登录工作正常?

编辑:我的登录 URL 总是在登录尝试前不久从 FB 获取,因此它们不会过期。

4

1 回答 1

2

我终于得到了这个。

问题是,在使用测试用户登录 URL 之前,必须至少加载一次http://facebook.com (可能是为了设置一些 cookie)。

所以,我使用脚本在 iframe 中打开 Facebook,然后在一段时间后重定向到登录 url:

<script>
setTimeout(function(){
window.location = "<?php echo $_GET['url']; ?>";
} , 2000 );
</script>
<iframe src="http://facebook.com/"></iframe>

请注意,iframe 上的 facebook 将仅加载为 head+body 空白页面,但这是有效的。

然后,您可以使用此脚本通过将其传递给 Chrome 命令行来登录测试用户,并将 url 编码的 Test-User-Login-URL 作为 'url' GET 参数。

为 chrome 配置文件使用新创建的目录,以避免在您的应用程序域上获得旧会话。

另外,我建议使用参数:--start-maximized, --no-default-browser-check,--no-first-run

更新:请注意,使用此方法请求的登录 URL 仅适用一次(可能还有任何其他方法 - 未检查)

于 2012-07-20T07:40:18.840 回答