gpt4 book ai didi

node.js - 尝试在 Electron 桌面应用程序中使用 oauth 流(使用 spotify API)?

转载 作者:行者123 更新时间:2023-12-03 12:32:30 24 4
gpt4 key购买 nike

我在 Electron 中有一个 React 应用程序,我正在尝试使用 spotify-web-api-node 访问 spotify API图书馆。但是,我不确定 oauth 流程究竟是如何在 Electron 应用程序中工作的……首先,对于重定向 URL,我使用了 this question并添加了 registerFileProtocol调用我的文件。然后我添加了一个特定的 ipcMain.on用于从页面接收 spotify 登录调用的处理程序,我已确认该处理程序适用于控制台日志。但是,当我真正调用 authorizeURL , 没发生什么事?
这是我的 main.js 的一部分:

app.whenReady().then(() => {
...
protocol.registerFileProtocol(
"oauthdesktop",
(request, callback) => {
console.log("oauthdesktop stuff: ", request, callback);
//parse authorization code from request
},
(error) => {
if (error) console.error("Failed to register protocol");
}
);
});

ipcMain.on("spotify-login", (e, arg) => {
const credentials = {
clientId: arg.spotifyClientId,
clientSecret: arg.spotifySecret,
redirectUri: "oauthdesktop://test",
};

const spotifyApi = new SpotifyWebApi(credentials);
console.log("spapi: ", spotifyApi);

const authorizeURL = spotifyApi.createAuthorizeURL(
["user-read-recently-played", "playlist-modify-private"],
"waffles"
);
console.log("spurl: ", authorizeURL);

axios.get(authorizeURL);
}
我希望出现典型的 spotify 登录页面弹出窗口,但这不会发生。我还期望(可能) registerFileProtocol回调以记录某些内容,但事实并非如此。我要在这里做什么? authorization guide特别提到在 auth url 上执行 GET 请求,这就是我在这里所做的......

最佳答案

在桌面应用程序中,建议打开系统浏览器,Spotify 登录页面将在那里呈现,作为创建 promise 的一部分。 opener library可用于调用浏览器。
当用户完成登录后,该技术是通过私有(private) URI 方案/文件协议(protocol)接收响应,然后解析 promise ,获取授权码,然后将其交换为 token 。不过这很棘手。
我的资源
我有一些关于此的博客文章,您可以从中借鉴一些想法,以及一些可以在您的 PC 上运行的代码示例:

  • Initial Desktop Sample
  • Final Desktop Sample

  • 其中第二个是 React 应用程序并使用私有(private) URI 方案,因此与您的非常相似。我使用 AppAuth-JS library但不是 Spotify。

    关于node.js - 尝试在 Electron 桌面应用程序中使用 oauth 流(使用 spotify API)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65176739/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com