Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用rauth登录facebook时,没有访问令牌的URL不正确_Python_Facebook_Rauth - Fatal编程技术网

Python 使用rauth登录facebook时,没有访问令牌的URL不正确

Python 使用rauth登录facebook时,没有访问令牌的URL不正确,python,facebook,rauth,Python,Facebook,Rauth,我有劳思网站的代码: https://github.com/litl/rauth/blob/master/examples/facebook-cli.py (代码可在本帖末尾找到以供参考) 在命令行中运行该程序将打开一个firefox窗口,facebook网站将显示以下消息: Success SECURITY WARNING: Please treat the URL above as you would your password and do not share it with a

我有劳思网站的代码:

https://github.com/litl/rauth/blob/master/examples/facebook-cli.py
(代码可在本帖末尾找到以供参考)

在命令行中运行该程序将打开一个firefox窗口,facebook网站将显示以下消息:

Success
SECURITY WARNING: Please treat the URL above as you would your password and do not     share it with anyone.
当facebook提前登录时。即使未登录,facebook登录窗口也会打开,使用用户名/密码登录后,上述消息会显示在firefox窗口中

现在,地址栏中生成的URL:

https://www.facebook.com/connect/blank.html#_=_
这显然是不正确的,它给出了后续python代码的异常

现在我如何调试问题是什么

谢谢

附言:


这是由于Facebook端的一项更改导致的,该更改以编程方式删除了access_令牌的URL。它发生在一个计时器上,在人类可以想象将其从URL栏中复制出来之前。这个例子是不完整的,但是我没有一个即时的解决方案,所以我建议你看一看,这是劳思的一个更实际的演示

你正在对抗的JS的相关部分:

setTimeout(function() {window.history.replaceState && window.history.replaceState({}, "", "blank.html#_=_");},500);

不确定你的q是否仍然优秀。去年我想出了一个解决办法。但代码在Powershell中;因此,只能直接在开窗机上使用。在Powershell中运行此脚本,剥离的访问令牌将在shell中打印出来。让我知道它是否对你有效。谢谢


Wow感谢您的及时回复。我想建立一个命令行应用程序,将刮我的个人资料,如朋友名单等相关信息。我可以确保它没有被黑客在一个安全的环境,如虚拟机运行。这在不借助web应用程序/服务器的情况下是否可行?ThanksIt仍然是可能的,但现在变得更加困难:您需要使用Selenium或ghost.py之类的工具访问
authorize_url
,以处理自动登录和授权请求,然后在Facebook客户端JS重置url之前解析url。非常感谢。我绝对可以尝试selenium、ghost.py或scrapy。另外请注意,出于演示目的,在浏览器中禁用JavaScript可以解决这一问题。
setTimeout(function() {window.history.replaceState && window.history.replaceState({}, "", "blank.html#_=_");},500);