【问题标题】:Google API Authentication for server服务器的 Google API 身份验证
【发布时间】:2012-08-25 07:25:28
【问题描述】:

我一直试图让 Google's Calendar API 在 PHP Web 应用程序中工作,但我很难通过身份验证。

我想做的是允许用户与服务器已知的单个帐户的日历进行交互。

OAuth 2.0 docs 中涵盖的每种场景都涉及“用户同意”,其中涉及登录表单和个人用户登录,但我希望服务器本身直接进行身份验证并为自己获取访问令牌。

我可以使用 OAuth 的某些部分或其他机制来执行此操作吗?

【问题讨论】:

    标签: php google-api oauth-2.0 google-calendar-api


    【解决方案1】:

    为此,您必须完成用户同意的步骤,然后将它提供给您的访问令牌复制到 PHP 代码中。

    OAuth 的一般流程是这样的:

    1. 将用户发送到身份验证页面。
    2. 用户返回 $_GET['code']
    3. 向 OAuth 服务器发送 $_GET['code'] 以获取令牌
    4. 在数据库中为用户(或会话,如果它的生命周期很短)存储令牌

    但是,当使用这样的单个日历执行此操作时,您修改了第 4 步。相反,您将令牌转储到屏幕并将其作为变量复制到您的 PHP 文件中,而不是将其放入数据库中。然后,当您将访问令牌传递给服务器时,您只需传递已知的静态令牌,而不是来自数据库/会话的动态令牌。

    【讨论】:

    • 谢谢,但是访问令牌本身不是很短暂吗?我必须一直手动执行此操作。
    • 自 12 月以来,我一直在为日历使用这种精确的方法,没有任何问题,而且此日历上的事件更新如此频繁,以至于我知道它仍在工作。我认为访问令牌确实有生命周期,但它是以月来衡量的,而不是几天或几小时。
    • 这仅适用于旧的 oauth1,不适用于当前的 oauth2
    【解决方案2】:

    在此处查看 mathewh 的答案:

    How to automate login to Google API to get OAuth 2.0 token to access known user account

    对我来说,灯泡是当您获得访问令牌时,您也会获得一个 refresh_token...一旦它过期,您就可以使用此令牌“刷新”您的访问令牌。

    第一次无法绕过手动授权步骤。

    【讨论】:

      猜你喜欢
      • 2020-04-22
      • 2019-07-23
      • 2017-09-14
      • 2014-05-04
      • 2015-03-31
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多