如何通过特定的电子邮件帐户授权我们的G-Suite Marketplace应用程序?

时间:2018-09-08 16:18:36

标签: google-apps-marketplace

我们在G-Suite Marketplace上有一个应用程序,只能由G-Suite管理员帐户安装(对于域安装)。
在重定向客户以安装我们的App之前,我需要满足以下条件:

  1. 我需要知道将要在客户域中授权我们的应用程序的Admin帐户的电子邮件(以便我可以将该电子邮件绑定到我们的客户ID,虽然我仍然可以 *)< br />
  2. 我希望重定向客户以安装我们的应用程序,而不必使用该管理员帐户多次登录
  3. 从Marketplace接到呼叫(到应用中配置的通用导航扩展)时,我需要知道刚刚对应用进行了授权的Admin帐户的电子邮件(1))应该能够在我们的记录中扣除客户ID。

* 尽管我仍然可以-重定向到我们的应用程序时,我失去了客户的上下文:当市场调用 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"
 }
}

0 个答案:

没有答案