Google Appengine上的Facebook OAuth问题

时间:2011-02-22 07:35:41

标签: python google-app-engine facebook oauth

我正在使用“服务器端”流程来获取用户在Google Appengine上使用Python访问某些信息的权限。

用户点击“允许”按钮后,我可以从Facebook获取服务器生成的代码。

但是当我获得访问令牌时,我遇到以下错误:

  

追踪(最近的呼叫最后):
  文件   “/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/init.py”   第515行,致电       handler.get(* groups)文件“/base/data/home/apps/finisherph/1.348502373491720746/controllers.py”,   第21行,在得到       data = urllib2.urlopen(access_token_url)
  文件   “/base/python_runtime/python_dist/lib/python2.5/urllib2.py”   第124行,在urlopen中       return _opener.open(url,data)文件   “/base/python_runtime/python_dist/lib/python2.5/urllib2.py”   第387行,公开       response = meth(req,response)文件   “/base/python_runtime/python_dist/lib/python2.5/urllib2.py”   第498行,在http_response中       'http',请求,响应,代码,消息,hdrs)文件   “/base/python_runtime/python_dist/lib/python2.5/urllib2.py”   第425行,错误       return self._call_chain(* args)文件   “/base/python_runtime/python_dist/lib/python2.5/urllib2.py”   第37行,在_call_chain中       result = func(* args)文件“/base/python_runtime/python_dist/lib/python2.5/urllib2.py”,   第506行,在http_error_default中       提出HTTPError(req.get_full_url(),代码,   msg,hdrs,fp)HTTPError:HTTP错误   400:错误请求

这是我的控制器中的代码,用户点击“允许”按钮后,来自facebook的响应。它仍然是一个黑客,所以代码有点脏。仍在努力让它发挥作用。

class Register(webapp.RequestHandler):
            def get(self):
                code=self.request.get('code')
                logging.debug("code: "+code)
                accesst_url=["https://graph.facebook.com/oauth/access_token?"]
                accesst_url.append("client_id=CLIENT_ID&")
                import urllib         
                accesst_url.append(urllib.urlencode
                    ({'redirect_uri':'http://my.website.com/register/facebook/'}))
                accesst_url.append('&')
                accesst_url.append("client_secret=CLIENT_SECRET&")
                accesst_url.append("".join(["code=",str(code)]))
                logging.debug(accesst_url)
                access_token_url="".join(accesst_url)
                logging.debug(access_token_url)
                import urllib2
                data = urllib2.urlopen(access_token_url)
                    ...
                    ...

此处发生错误:

data = urllib2.urlopen(access_token_url)

当我从日志中复制并粘贴access_token_url时,出现以下错误:

  

{“error”:{         “type”:“OAuthException”,         “message”:“验证验证码时出错”。 }}

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

看起来你正试图将access_token作为url访问,这是不对的。

以下是an example,其中说明了如何通过GA在OAE上进行OAuth身份验证。