【问题标题】:Pushbullet Oauth using Bash and curlPushbullet Oauth 使用 Bash 和 curl
【发布时间】:2015-08-25 01:19:06
【问题描述】:

我最近在 Bash 中编写了一个 Pushbullet Linux 命令行客户端。我想允许用户通过 Oauth 授予对其 Pushbullet 帐户的访问权限,但我遇到了一些麻烦。前几天我刚刚为 Google Drive API 做了 Oauth。它相当简单,只需要几行代码。老实说,Oauth section in the Pushbullet API docs 有点不清楚。

请确保我了解所需的步骤:

  1. 使用应用内生成的 URL 将用户发送到 Pushbullet 站点
  2. URL 应包括:client_id 和 redirect_url(redirect_url 指定用户在授予 Pushbullet 访问权限后重定向到的 url,除了 response_type、令牌或代码)
  3. 用户授予或拒绝访问其 Pushbullet 帐户
  4. 如果授予访问权限,则将用户发送到 redirect_url
  5. 客户端必须获取嵌入在redirect_url中的access_token,然后将access_token附加到所有未来的请求中

这听起来对吗?

我的脚本在我的浏览器中成功加载了身份验证 URL,但是当我单击“批准”时,我收到以下错误:The param 'redirect_uri' has an invalid value。我使用了 Pushbullet 设置的“客户端”部分中列出的 redirect_uri。所以这: https://www.pushbullet.com/login-success/access_token=<access token>&response_type=token&scope=everything

我使用的网址是否正确?这是一个命令行客户端,我没有它的域。不过这应该没关系吧?

Oauth 是否总是需要通过浏览器进行身份验证,还是可以通过某种 Web 服务调用来完成(这就是 GDrive API 的工作方式)?理想情况下,我会让 curl 处理所有事情,而不必担心加载 Web 浏览器。

【问题讨论】:

    标签: bash oauth pushbullet


    【解决方案1】:

    嗯,我什至做了一个图表,但我想文档仍然需要一些工作。如果您有任何建议,请告诉我!

    因此,如果您想使用“客户端”流程,您应该使用 https://www.pushbullet.com/login-successredirect_uri,这意味着您的 authorize_url 应该类似于 https://www.pushbullet.com/authorize?client_id=YW7uItOzxPFx8vJ4&redirect_uri=https%3A%2F%2Fwww.pushbullet.com%2Flogin-success&response_type=token 请注意,因为这是 HTTP,您必须对其进行 urlencode redirect_uri,因为我已将其粘贴在这里。如果您仍然认为它是无效的 redirect_uri,请尝试在此页面上将客户端的 redirect_uri 设置为 https://www.pushbullet.com/login-successhttps://www.pushbullet.com/#settings/clients

    我不确定您所说的https://www.pushbullet.com/login-success/access_token=<access token>&response_type=token&scope=everything 是什么意思。也许您的意思是https://www.pushbullet.com/login-success?access_token=<access token>&response_type=token&scope=everything,但我认为没有必要将这些参数放在redirect_uri 上。

    我在这里能想到的一件事是,如果我允许https://www.pushbullet.com/login-success 为所有客户工作,而不管他们的redirect_uri 设置为什么,这可能会使这更容易。让我知道不清楚的地方,以便我解决。

    我没有使用您所说的特定 Google OAuth,但我对 google oauth 的总体经验是,它是我使用过的最复杂且最难使用的 OAuth 实现。您能否给我一个指向您所引用内容的链接,以便我了解他们如何使 OAuth 更易于使用?

    【讨论】:

    • 至于我的问题:我仍然无法让 OAuth 与 response_type=token 一起工作。我收到有关无效响应类型的错误。我使用了您建议的 redirect_uri。但是,我能够让它与 response_type=code 一起工作,所以问题解决了。
    • 我必须承认我对这些东西还很陌生,所以我的任何困惑可能更多是由于缺乏经验而不是糟糕的文档。顺便说一句,你制作的图表很好很清晰。老实说,谷歌的文档不是很好。我发现为 Drive 实现 OAuth 更容易,因为这里有很多关于 Drive API 的问题。例如,谷歌在解释范围方面做得很差。以下是 Google'e Drive REST API 文档的链接(并点击其中包含的客户端链接):developers.google.com/drive/web/about-auth
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多