我们在G-Suite Marketplace上有一个应用程序,只能由G-Suite管理员帐户安装(对于域安装)。
在重定向客户以安装我们的App之前,我需要满足以下条件:
* 尽管我仍然可以-重定向到我们的应用程序时,我失去了客户的上下文:当市场调用 Universal Navigation Extension (通用导航扩展名)(配置为<已将我们的应用安装到通用导航扩展 URL-http://our-marketplace-endpoint?domain= $ {DOMAIN_NAME})的em> domain ,我不再知道(我们系统上的)哪个客户ID在他的G-Suite域上授权了我们的应用,因此我无法再绑定这两个(我们的客户ID <> google-domain)。
这可能吗?还是应该考虑采用不同的方法来实现相同的目标?
我发现使用其中的任何一种方式都有一定帮助,主要是用于OAuth管理员帐户并告诉市场以使用该帐户来授权我们的应用(用替换了真实价值APP_ID , APP_NAME , CLIENT_ID ):
但是我仍然不明白如何才能达到上述所有条件-仅仅是为了提供更好的用户体验。
当前,我们正在执行此流程,但是在步骤之间使用了一些冗余的身份验证(客户必须多次选择相同的帐户)。
关于(3),我还尝试使用下一段代码获取授权电子邮件:
oauth_app = OAuth().remote_app(
'google',
consumer_key=gconfig[top_domain]['consumer_key'],
consumer_secret=gconfig[top_domain]['consumer_secret'],
request_token_params={
'scope': 'https://www.googleapis.com/auth/userinfo.email',
},
base_url='https://www.googleapis.com/oauth2/v2/',
request_token_url=None,
access_token_method='POST',
access_token_url='https://accounts.google.com/o/oauth2/token',
authorize_url='https://accounts.google.com/o/oauth2/auth')
oauth_app._tokengetter = lambda: session.get('google_token')
resp = oauth_app.get('https://www.googleapis.com/oauth2/v2/userinfo',
token=session['google_token'])
但这一直以401未经授权而失败:
"error": {
"errors": [
{
"domain": "global",
"reason": "authError",
"message": "Invalid Credentials",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Invalid Credentials"
}
}