使用google oauth配置多个登录会话
我使用谷歌OAuth与奥多进行谷歌登录 一切正常,我可以使用谷歌登录,没有问题。但是,我无法使用相同的google凭据打开多个会话 例如,如果我打开两个会话,一个在chrome中,另一个在firefox中,那么旧的会话将被注销。 我不明白问题出在哪里,因为无论我启动了多少会话,如果我分别使用用户名和密码登录,,而不使用google OAuth,所有会话都不会注销-工作正常 我想知道它和代码有什么关系,所以我做了很多调整,但都没有效果。我看到它一度无法获取旧会话的会话信息。然而,我的问题不是关于代码 我的问题是,在google OAuth或Odoo 8中是否有任何配置或设置可以让用户同时拥有多个会话,或者在使用google OAuth和Odoo时是否有任何我需要知道的设置使用google oauth配置多个登录会话,oauth,oauth-2.0,google-oauth,odoo,google-authentication,Oauth,Oauth 2.0,Google Oauth,Odoo,Google Authentication,我使用谷歌OAuth与奥多进行谷歌登录 一切正常,我可以使用谷歌登录,没有问题。但是,我无法使用相同的google凭据打开多个会话 例如,如果我打开两个会话,一个在chrome中,另一个在firefox中,那么旧的会话将被注销。 我不明白问题出在哪里,因为无论我启动了多少会话,如果我分别使用用户名和密码登录,,而不使用google OAuth,所有会话都不会注销-工作正常 我想知道它和代码有什么关系,所以我做了很多调整,但都没有效果。我看到它一度无法获取旧会话的会话信息。然而,我的问题不是关于代
任何想法都会非常有用,因为我已经为此奋斗了好几天。谢谢 如果您按照上述步骤操作,您将能够通过OAuth模块成功地使用OpenERP配置Google应用程序(Gmail)。我唯一缺少的是在youtube视频中发现的一个额外步骤;你必须:
- 转到设置-用户
- 对于要授予OAuth访问权限的用户,使用“通过电子邮件发送重置密码说明”选项向他们发送密码重置
- 要求您的用户(或您自己)使用他们在电子邮件中收到的链接,但是,当他们打开它时,他们将只看到带有“使用谷歌登录”选项的登录屏幕。(没有可用的典型更改密码选项)
- 使用正确的谷歌帐号,瞧现在它连接顺畅
- 显示如何在OpenERP中使用Google登录的Youtube视频:
我已经为OdooV9构建了一个模块。没有此模块,Odoo只保存一个令牌。但是,当您在多台计算机中使用odoo时,每台计算机使用一个令牌 默认情况下,odoo不支持多令牌。您需要修改模块auth_oauth的代码 有了这个模块,它可以保存所有令牌,就像您可以有多个连接一样 您可以加载并安装此模块:
就像我说的,一切正常。我早就多走了一步。但这不是问题所在。问题是它不能保留旧的会话。仅保留最近的会话,并注销所有较旧的会话。
class ResUsers(models.Model):
_inherit = 'res.users'
oauth_access_token_ids = fields.One2many('auth.oauth.multi.token', 'user_id', 'Tokens', copy=False)
oauth_access_max_token = fields.Integer('Number of simultaneous connections', default=5, required=True)
@api.model
def _auth_oauth_signin(self, provider, validation, params):
res = super(ResUsers, self)._auth_oauth_signin(provider, validation, params)
oauth_uid = validation['user_id']
user_ids = self.search([('oauth_uid', '=', oauth_uid), ('oauth_provider_id', '=', provider)]).ids
if not user_ids:
raise openerp.exceptions.AccessDenied()
assert len(user_ids) == 1
self.oauth_access_token_ids.create({'user_id': user_ids[0],
'oauth_access_token': params['access_token'],
'active_token': True,
})
return res
@api.multi
def clear_token(self):
for users in self:
for token in users.oauth_access_token_ids:
token.write({
'oauth_access_token': "****************************",
'active_token': False})
@api.model
def check_credentials(self, password):
try:
return super(ResUsers, self).check_credentials(password)
except openerp.exceptions.AccessDenied:
res = self.env['auth.oauth.multi.token'].sudo().search([
('user_id', '=', self.env.uid),
('oauth_access_token', '=', password),
('active_token', '=', True),
])
if not res:
raise