3

Flask フレームワークを使用して Python で Web アプリを作成し、サイトで提供されている SDKを使用して Facebook からアクセス トークンを要求しています。

アクセス トークンが返され、GraphAPI オブジェクトに正しく設定されます。ただし、次のエラーが返されます。

GraphAPIError: OAuth アクセス トークンが無効です。

同じアクセス トークンを使用して、ローカルの Python 環境からグラフ API をクエリすると、問題なく動作します。問題は、Web サーバーで実行する場合にあるようです。

以下のコード スニペットを参照してください。

@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 に答える