当前位置: 首页 > 知识库问答 >
问题:

Spotify API php-无法请求数据并获取访问令牌

岳迪
2023-03-14

我目前还不熟悉使用php和Laravel以及使用API,但我一直在学习Spotify php教程https://github.com/jwilsson/spotify-web-api-php.

我还大胆地提出了一些我想问的问题,希望有人能帮忙。

我已经完成了所有步骤,但需要帮助才能让它正常工作。

将下面的代码放在它自己的文件中,我们称之为auth。php。将CLIENT_ID和CLIENT_SECRET替换为Spotify提供给您的值。

(我应该在哪里保存这个文件?)

REDIRECT_URI是您在创建Spotify应用程序时输入的,请确保它完全匹配。

(我使用了我的localhost:8888/callback/不确定这是否正确?)很明显,出于安全考虑,我没有在这个网站上公布我的详细信息。

<?php
require 'vendor/autoload.php';

$session = new SpotifyWebAPI\Session(
    'CLIENT_ ID',
    'CLIENT_SECRET',
    'REDIRECT_URL'
);

$options = [
    'scope' => [
        'playlist-read-private',
        'user-read-private',
    ],
];

header('Location: ' . $session->getAuthorizeUrl($options));
die();



?>

当用户批准了你的应用程序后,Spotify会将用户连同代码重定向到指定的重定向URI。您需要使用此代码从Spotify请求访问令牌。

将此代码放入名为callback的新文件中。php:

请用我的详细信息替换客户端ID和机密?我如何保存访问令牌?

require 'vendor/autoload.php';

$session = new SpotifyWebAPI\Session(
    'CLIENT_ID',
    'CLIENT_SECRET',
    'REDIRECT_URI'
);

// Request a access token using the code from Spotify
$session->requestAccessToken($_GET['code']);

$accessToken = $session->getAccessToken();
$refreshToken = $session->getRefreshToken();

// Store the access and refresh tokens somewhere. In a database for example.

// Send the user along and fetch some data!
header('Location: app.php');
die();

在第三个文件中,是app。php,告诉API包装器要使用哪个访问令牌,然后进行一些API调用!

(我在哪里也保存这个文件,我如何在我的Laravel控制器中拨打这些电话?)

require 'vendor/autoload.php';

$api = new SpotifyWebAPI\SpotifyWebAPI();

// Fetch the saved access token from somewhere. A database for example.
$api->setAccessToken($accessToken);

// It's now possible to request data about the currently authenticated user
print_r(
    $api->me()
);

// Getting Spotify catalog data is of course also possible
print_r(
    $api->getTrack('7EjyzZcbLxW7PaaLua9Ksb')
);

共有1个答案

壤驷宏才
2023-03-14

(我应该在哪里保存这个文件?)

您可以将此文件保存在laravel中的不同位置,用于测试,您可以将其写入控制器(不是最好的,但您可以)。

用我的资料替换客户ID和机密吗?

当然可以!

还有,如何保存访问令牌?

您可以将其保存在数据库、会话或所需的位置。如果您将其存储在会话中,那么如果用户注销了您的应用程序,您将不得不发出新请求以获取新的访问令牌。在数据库中,您可以重用它。

许多访问令牌只能在特定的时间内使用。Spotify文档应该谈谈它。

(我在哪里也保存这个文件,我如何在我的Laravel控制器中拨打这些电话?)

为了进行测试,您可以在控制器中执行此操作,但最好在服务层中放置应用程序的业务逻辑

不要复制require'供应商/自动加载。php' 在你的文件中,Larvel已经自动加载了composer。

 类似资料:
  • 我试图使用从Spring应用程序中的公共客户端获取访问令牌。 谁能帮我弄清楚我做错了什么吗?

  • 我试图使用请求模块向https://accounts.spotify.com/api/token发出POST请求,以便获得访问令牌。我已经用我的Spotify开发帐户注册了重定向URI。这是我的快速<代码>/重定向 路由。 有人能看到这里可能出了什么问题吗?每次我得到的都是一个不伦不类的“哎呀!出了问题”错误页面。

  • 我想在我的应用程序中使用Google drive api,这就是为什么我在安装的应用程序中使用OAuth2.0。但我有个问题--我拿不到访问令牌。首先,我使用以下请求成功地获得了授权代码:

  • 原理 对于POST请求的处理,koa2没有封装获取参数的方法,需要通过解析上下文context中的原生node.js请求对象req,将POST表单数据解析成query string(例如:a=1&b=2&c=3),再将query string 解析成JSON格式(例如:{"a":"1", "b":"2", "c":"3"}) 注意:ctx.request是context经过封装的请求对象,ctx.

  • 使用方法 在koa中,获取GET请求数据源头是koa中request对象中的query方法或querystring方法,query返回是格式化好的参数对象,querystring返回的是请求字符串,由于ctx对request的API有直接引用的方式,所以获取GET请求数据有两个途径。 1.是从上下文中直接获取 请求对象ctx.query,返回如 { a:1, b:2 } 请求字符串 ctx.que

  • 客户端通过使用按附录B“application/x-www-form-urlencoded”格式在HTTP请求实体正文中发送下列UTF-8字符编码的参数向令牌端点发起请求: grant_type 必需的。值必须设置为“client_credentials”。 scope 可选的。如3.3节所述的访问请求的范围。 客户端必须如3.2.1所述与授权服务器进行身份验证。 例如,客户端使用传输层安全发起如