0

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

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

  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 浏览器。

4

1 回答 1

0

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

因此,如果您想使用“客户端”流程,您应该使用其中的 a redirect_urihttps://www.pushbullet.com/login-success这意味着您的 authorize_url 应该看起来像https://www.pushbullet.com/authorize?client_id=YW7uItOzxPFx8vJ4&redirect_uri=https%3A%2F%2Fwww.pushbullet.com%2Flogin-success&response_type=token 注意,因为这是 HTTP,您必须对 redirect_uri 进行 urlencode,因为我已将其粘贴在这里。如果您仍然认为它是无效的 redirect_uri,请尝试https://www.pushbullet.com/login-success在此页面上将客户端的 redirect_uri 设置为:https ://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 更易于使用?

于 2015-08-25T06:25:55.040 回答