python:GraphAPIError:无效的OAuth访问令牌

时间:2013-06-25 12:50:38

标签: python facebook facebook-graph-api flask dreamhost

我正在使用Flask框架在python中创建一个Web应用程序,以使用SDK supplied in their site从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')

有没有人在此之前和/或可以提供一些见解?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

return graph.get_object("me")