我们在为使用Oauth2.0进行SSO的新Google Apps Marketplace开发应用程序时遇到了问题。Ruby on Rails上的新Google Apps Marketplace Oauth2.0实施问题
作为我们应用程序的一部分,我们在离线模式下使用Google Calendar V3 API - 这意味着我们需要为我们的客户保留'refresh_token'。
为了得到我们需要配置google_oauth2.0提供商第一的OAuth2.0身份验证在“refresh_token”(使用omniauth - 谷歌 - 的oauth2宝石),如:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, CONFIG[:app_id], CONFIG[:app_secret], {
access_type: 'offline',
prompt: 'consent' }
end
如果不指定access_type:'离线,并提示:'同意'我们没有收到refresh_token,并且无法正确使用日历API。
但是,指定提示符''consent''属性会导致授权弹出窗口,这会取消整个SSO想法 - 其中只有在安装过程中会提示域管理员。
是否可以在不提示域用户的情况下获取refresh_token? 新的Google Apps Marketplace如何在不提示最终用户的情况下支持离线访问?
您是对的 - 服务帐户是在用户不在键盘时打开API调用并且不会破坏SSO的唯一方式。这是因为通过Google Apps Marketplace安装的应用无法请求刷新令牌。我们正在探索如何以安全的方式允许刷新令牌。 – jonathanberi