如何使用 Chrome 扩展程序获取 Laravel 护照令牌?

Posted

技术标签:

【中文标题】如何使用 Chrome 扩展程序获取 Laravel 护照令牌?【英文标题】:How to use Chrome extension get Laravel passport token? 【发布时间】:2019-11-29 18:48:51 【问题描述】:

我正在使用 Chrome 扩展访问 Laravel 护照 API。目前,Laravel 护照 API 已设置并正在运行。我尝试使用chrome.identity.launchWebAuthFlow 获取护照令牌但无法正常工作。 Google提供了一个例子,和我的用例不一样。

我有两个问题:

    根据Laravel的document,第一步是request an authorization code,API端点是/oauth/authorizeredirect_uri 应该是什么,因为它是 chrome 扩展而不是网站?

    用户批准请求后,我使用chrome.identity.launchWebAuthFlow 从 Passport 获取访问令牌。在 laravel 中它是一个 POST 请求,终点是/oauth/token。但是我试过chrome.identity.launchWebAuthFlow,是GET请求。

我可以使整个过程使用 php 而不是 Chrome 扩展。有什么建议吗?

【问题讨论】:

【参考方案1】:

根据launchWebAuthFlow 文档:

当提供者重定向到与https://app-id.chromiumapp.org/* 模式匹配的 URL 时,窗口将关闭,并将最终的重定向 URL 传递给回调函数。

例如,您可以使用以下代码:

let redirectUrl = chrome.identity.getRedirectURL('redirect');

chrome.identity.launchWebAuthFlow(
    url: `https://my.app.domain.com/oauth/authorize?client_id=xxx&response_type=code&scope=&redirect_uri=$redirectUrl`
, (redirectUrl) => 
    console.log(redirectUrl) // Redirect URL with oauth query params added
)

【讨论】:

我尝试并生成了redirectUrl。但是回调函数中的重定向 URL 仍然是未定义的。 我更改了laravel表oauth_clients中的重定向url,现在我可以得到授权码了。它不是访问令牌。如何获得令牌? 查看 laravel 文档的 Converting Authorization Codes To Access Tokens 部分:laravel.com/docs/master/passport#requesting-tokens 是的,它现在正在工作。我正在使用另一个 POST 请求来获取Access Token。感谢您的提问。

以上是关于如何使用 Chrome 扩展程序获取 Laravel 护照令牌?的主要内容,如果未能解决你的问题,请参考以下文章

获取Chrome扩展程序中日历事件的推送通知

如何在 chrome 扩展程序中获取选项卡通知,以便扩展程序可以在每次新通知到达时显示桌面警报

如何从chrome扩展获取系统代理设置?

在 chrome 扩展中,如何从当前 chrome 用户以外的 gmail 用户获取访问令牌?

如何使用 Chrome 扩展程序自动保存 Google Chrome 开发者工具的网络面板日志?

如何在浏览器中获取 Google Cloud Translation API 的身份验证令牌(chrome 扩展)