当前位置: 首页 > 知识库问答 >
问题:

Tornado Google+Oauth错误代码400

白文彬
2023-03-14

我有问题在Google+OAuth使用龙卷风框架。我在nginx服务器上使用AngularJS作为前端,python tornado作为后端。我从AngularJS向Google+API发送HTTP请求,我的tornado API重定向到Google登录。成功登录后,它重定向回到我的应用程序。在重定向的时候,我认为它会自动刷新,即有两个来自谷歌的重定向调用。

查看tornado OAuth2中的两个HTTP重定向调用

这是我的代码:

class GoogleOAuth2LoginHandler(tornado.web.RequestHandler, tornado.auth.GoogleOAuth2Mixin):
    @tornado.gen.coroutine
        def get(self):
            if self.get_argument('code', False):
                user = yield self.get_authenticated_user(
                    redirect_uri='http://your.site.com/auth/google',
                    code=self.get_argument('code')
                )
                # Save the user with e.g. set_secure_cookie
            else:
                yield self.authorize_redirect(
                    redirect_uri='http://your.site.com/auth/google',
                    client_id=self.settings['google_oauth']['key'],
                    scope=['profile', 'email'],
                    response_type='code',
                    extra_params={'approval_prompt': 'auto'}

共有1个答案

燕嘉熙
2023-03-14

对于完全相同的配置(Tornado+Nginx+AngularJS)我们也遇到了同样的问题。我只是重写了OAuth身份验证部分,没有龙卷风和问题解决。您可以使用tornado的AsyncHttpClient,但我使用了aiohttp,因为我在Asyncio中托管了tornado。下面是新代码,注释部分是旧代码。

from backend.helpers.async_oauth2.client import Client

        oauth_client = Client(app_settings.security.google.client_id, app_settings.security.google.client_secret,
                              app_settings.security.google.redirect_uri, "https://accounts.google.com/o/oauth2/auth"
                              , "https://accounts.google.com/o/oauth2/token")

        access = await oauth_client.get_token(code, grant_type="authorization_code")

        # access = await self.get_authenticated_user(
        #     redirect_uri=app_settings.security.google.redirect_uri,
        #     code=code)

        # user = await self.oauth2_request(
        #     "https://www.googleapis.com/oauth2/v1/userinfo",
        #     access_token=str(access["access_token"]))

        user = await oauth_client.http_get(
            "https://www.googleapis.com/oauth2/v1/userinfo?{}".format(
                url_parse.urlencode({'access_token':str(access["access_token"])})))
 类似资料:
  • 错误代码 宏定义 #define  RT_EOK   0   无错误   #define  RT_ERROR   1   一般错误   #define  RT_ETIMEOUT   2   超时错误   #define  RT_EFULL   3   资源已满   #define  RT_EEMPTY   4   资源已空   #define  RT_ENOMEM   5   内存不足   #de

  • 说明:编写一条if语句,验证字符串是否包含字符。 添加一个if语句,检查是否大于零。不要忘记if语句末尾的!如果字符串中确实有一些字符,则打印用户的单词。否则(即:语句),请打印空。您需要多次运行代码,测试空字符串和带字符的字符串。当你确信你的代码可以工作时,继续下一个练习。 我被卡住了,因为我一直遇到以下错误。我做错了什么?

  • 我的服务器上的Https不工作并得到。我尝试了太多的东西,但无法得到任何结果。我的带有Nginx反向代理的HttpSpring启动服务器工作得很好。 下面是我的 /etc/nginx/conf.d/*. conf文件: 我已经检查了我的443端口是否打开并正在监听。 我不知道我哪里做错了任何帮助都将感激不尽

  • 1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件导致删除数据库失败 1010:不能删除数据目录导致删除数据库失败 1011:删除数据库文件失败 1012:不能读取系统表中的记录 1020:记录已被其他用户修改 1021:硬盘剩余空间不足,请加大硬盘可用空间 1022:关键字重复,更改记录失败

  • public static final int ERROR_CODE_SUCCESS = -1; public static final int ERROR_CODE_INTERNAL_ERROR = 0; public static final int ERROR_CODE_INVALID_REQUEST = 1; public static final int ERROR_CODE_NETWO

  • 尝试按照microsoft说明获取访问令牌。但是我得到了一个错误,因为它没有解。我做错了什么,这对我意味着什么?在此输入映像描述请求:https://log in . Microsoft online . com/{ tenant }/oauth 2/v 2.0/authorize * auth _ code:client _ id https://log in . Microsoft onlin