【问题标题】:How do I prompt a user to connect their google account with my app?如何提示用户将他们的谷歌帐户与我的应用程序关联?
【发布时间】:2012-08-14 21:19:17
【问题描述】:

我想知道我应该如何提示用户从我的应用程序登录/连接到他们的谷歌帐户,以便我可以使用他们的电子邮件和密码访问他们的文档/驱动器。我有一个在我的桌面上运行的应用程序,它连接到一个谷歌帐户的驱动器,并创建一个电子表格,然后访问它以获取信息。目前我必须硬编码电子邮件和密码。

我听说过 gaema,但听起来不太对劲。另外我不知道它是否有所作为,但这个应用程序只在我的笔记本电脑上,而不是在谷歌服务器上运行。虽然不应该……我想。

附:我是谷歌应用引擎和python的新手,甚至是stackoverflow,所以请不要讨厌我的菜鸟问题:)

【问题讨论】:

  • 好吧,为什么不直接使用经典的 HTML 表单来获取用户的这种输入呢?

标签: python google-app-engine python-2.7 google-drive-api


【解决方案1】:

向用户询问他们的用户名和密码绝不是一个可接受的解决方案,我敢肯定他们不会愿意将其提供给您。相反,您需要使用某种授权流程,通常是 OAuth 2.0。

this article 中解释了使用 GAE 的 Google Drive 的完整示例应用程序。

【讨论】:

    【解决方案2】:

    所以 AppEngine 使与 Google 帐户相关的事情变得非常简单(惊喜 :))。看看这里的文档https://developers.google.com/appengine/docs/python/users/overview。这解释了用户服务,您可以在其中请求用户使用其 Google 凭据登录。例如(直接来自文档):

    from google.appengine.api import users
    from google.appengine.ext import webapp
    
    class MyHandler(webapp.RequestHandler):
        def get(self):
            user = users.get_current_user()
            if user:
                greeting = ("Welcome, %s! (<a href=\"%s\">sign out</a>)" %
                            (user.nickname(), users.create_logout_url("/")))
            else:
                greeting = ("<a href=\"%s\">Sign in or register</a>." %
                            users.create_login_url("/"))
    
            self.response.out.write("<html><body>%s</body></html>" % greeting)
    

    这会检查用户是否使用他们的 Google 帐户登录,如果没有,则会向他们显示登录 URL。执行“魔术”的部分是 users.create_logout_url('/')users.create_login_url('/') 方法。他们创建一个指向用户可以登录的特殊 URL 的链接(无需您进行任何额外的格式化/编码)。然后将它们重定向回您的站点(“/”将它们发送到您的主页,但您可以更改)。希望这会有所帮助!

    编辑: 正如@Wooble 指出的那样,这不会授予您的应用程序访问用户数据的权限——它只会根据用户服务提供的信息为您提供一些关于用户的基本信息。为了允许您的应用程序访问 Google Drive 数据,@SebastianKreft 提供的链接显示了一个执行身份验证的示例应用程序。有关将 OAuth 与 Drive 结合使用的其他一般信息,请参阅 here。简而言之,用户需要向您的应用授予权限以允许其访问他们的数据,并且它通过 OAuth 令牌执行此操作(请参阅文档以获得比我能给出的更好的解释)。

    【讨论】:

    • 这会将用户登录到您的应用程序,假设您使用用户 API 进行任何操作;它不允许您访问他们的文档/云端硬盘帐户。
    • @Wooble 好点 - 错过了问题中他实际上需要对他们的数据做某事的部分:) 现在修改。
    猜你喜欢
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多