3

我正在使用 Flask 框架在 python 中制作一个 Web 应用程序,以使用他们网站中提供的 SDK从 Facebook 请求访问令牌。

返回访问令牌并在 GraphAPI 对象中正确设置。但是,它返回以下错误:

GraphAPIError:无效的 OAuth 访问令牌。

如果我使用相同的访问令牌从本地 python 环境中查询图形 API,它就可以正常工作。问题似乎是在网络服务器中执行时。

请参阅下面的代码片段:

@app.route('/facebook')
def fb():
  if 'token' in session:
    graph = facebook.GraphAPI(session['token'])
    return graph.get_object("me")


@app.route('/facebook/login')
def fblogin():
  code = request.args.get('code','')
  if(code == ""):
    args = dict(client_id=app_id, redirect_uri=request.base_url)
    #args = dict(client_id=app_id, redirect_uri=request.url_root + 'facebook')
    return redirect(
    "https://graph.facebook.com/oauth/authorize?" +
    urllib.urlencode(args))
  else:
    token = facebook.get_access_token_from_code(code, request.base_url, app_id, app_secret)
    session['token'] = [token.itervalues().next()]
    return redirect (request.url_root + 'facebook')

有没有人遇到过这个问题和/或可以提供一些见解?

4

1 回答 1

1

好的,我已设法在此代码中更正并使其正常工作的 2 个问题:

1) 以下代码行列出了 GraphAPI 对象无法识别有效访问令牌的原因:

session['token'] = [token.itervalues().next()]

2) 以下代码行给出了一个错误,指出“dict”不可调用。这是因为返回的变量是一个字典,为了作为视图返回,必须首先将其转换为字符串:

return graph.get_object("me")
于 2013-06-26T20:33:16.797 回答