【问题标题】:Marketplace app, use OAuth 1.0 or 2.0?市场应用,使用 OAuth 1.0 还是 2.0?
【发布时间】:2013-01-14 13:29:25
【问题描述】:

我读过的很多关于如何构建 Marketplace 应用程序的文档都告诉我将 OpenID+Oauth 1.0 与 2-Legged 一起使用。 但是阅读 Google 文档上有关身份验证的所有其他信息告诉我 OAuth 1.0 已被弃用,不应使用。

那么什么是正确的?我应该在 Marketplace 上使用 OAuth 1.0 吗?

PS:澄清一下,我将使用 Google Documents List API version 3.0 API,因为在 Drive SDK 上,基于文件的权限集是不可能知道用户的电子邮件的。在文件的权限集上只有名称,但我需要用户的电子邮件。

谢谢,

【问题讨论】:

    标签: google-apps google-openid google-data-api google-apps-marketplace google-oauth


    【解决方案1】:

    扩展 jonathanberi 的评论,

    在此答案中,Google 已弃用 Oauth1 和 OpenId。 Google 建议对所有市场应用程序使用 OAuth2,尤其是在新体验之后announcement

    这里是一些示例代码

      def get(self, *args, **kwargs):
    
            code = self.get_argument('code', None)
    
            error = self.get_argument('error',None)
    
            redirect_uri = "{protocol}://{host}{path}".format( protocol = self.request.protocol,
    
                                                               host = self.request.host,
    
                                                               path = self.request.path)
    
            flow = OAuth2WebServerFlow(
    
                                client_id    = config['CLIENT_ID'],
    
                                client_secret= config['CLIENT_SECRET'],
    
                                scope        = 'https://www.googleapis.com/auth/userinfo.email',
    
                                redirect_uri = redirect_uri,
    
                                access_type  = 'online'
    
                            )
            if code is None:
    
                auth_uri = flow.step1_get_authorize_url()
    
                self.redirect(auth_uri)
    
            elif error:
                self.redirect("http://error.com")
    
            else:
                credentials = flow.step2_exchange(code)
    
                http = httplib2.Http()
    
                http = credentials.authorize(http)
    
                service = build('oauth2', 'v2', http=http)
    
                user = service.userinfo().get().execute()
    

    【讨论】:

      【解决方案2】:

      使用 OpenID 的替代方法是让用户可以使用不同类型的帐户(如 facebook、google 等)登录您的应用程序。

      https://developers.google.com/accounts/docs/OpenID?hl=en

      如果您想提供这种可能性,您应该使用 OpenID,但如果您只想授予用户 gmail 帐户的权限,则应该只使用 OAuth 授权。

      OAuth 1.0 自 2012 年 4 月起正式弃用 https://developers.google.com/accounts/docs/OAuth

      【讨论】:

      猜你喜欢
      • 2014-11-02
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      相关资源
      最近更新 更多