2

我有来自 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 anyone.

当facebook预先登录时。即使未登录,facebook 登录窗口也会打开,使用用户名/密码登录后,上述消息会显示在 firefox 窗口中。

现在地址栏中生成的 URL:

https://www.facebook.com/connect/blank.html#_=_

这显然是一个不正确的,它从后续的 python 代码中给出了异常。

现在我该如何调试问题所在?

谢谢

PS:

from rauth.service import OAuth2Service

import re
import webbrowser

# Get a real consumer key & secret from:
# https://developers.facebook.com/apps

facebook = OAuth2Service(
    client_id='xxxxxxx',
    client_secret='yyyyyyy',
    name='facebook',
    authorize_url='https://graph.facebook.com/oauth/authorize',
    access_token_url='https://graph.facebook.com/oauth/access_token',
    base_url='https://graph.facebook.com/')

redirect_uri = 'https://www.facebook.com/connect/login_success.html'

params = {'scope': 'read_stream',
      'response_type': 'token',
      'redirect_uri': redirect_uri}

authorize_url = facebook.get_authorize_url(**params)

print 'Visit this URL in your browser: ' + authorize_url
webbrowser.open(authorize_url);

url_with_code = raw_input('Copy URL from your browser\'s address bar: ')
access_token = re.search('\#access_token=([^&]*)', url_with_code).group(1)
session = facebook.get_session(access_token)

user = session.get('me').json()

print 'currently logged in as: ' + user['link']
4

2 回答 2

0

不确定您的 q 是否仍然出色。去年我想出了一个解决方案。但是代码在 Powershell 中;因此,它只能直接在 Window 机器上使用。在 Powershell 中运行此脚本,剥离的访问令牌会在 shell 中打印出来。让我知道它是否对您有用。谢谢!

http://groups.yahoo.com/neo/groups/sas_academy/conversations/messages/591

于 2013-09-14T06:29:42.167 回答
0

这是由于 Facebook 端的更改以编程方式去除了 access_token 的 URL。它发生在一个计时器上,在人类可以想象的将它从 URL 栏中复制出来之前。该示例已损坏,但我没有立即为您解决问题,因此我建议您改为查看Flask 应用程序,无论如何,这是一个更实际的 rauth 演示。

您正在战斗的相关 JS 位:

setTimeout(function() {window.history.replaceState && window.history.replaceState({}, "", "blank.html#_=_");},500);
于 2013-06-24T00:32:13.440 回答