【问题标题】:Deezer API access tokenDeezer API 访问令牌
【发布时间】:2020-02-11 10:04:43
【问题描述】:

我尝试获取 deezer API 的访问令牌,但在发送请求时我不断收到“错误代码”消息。 这是上述要求:

'https://connect.deezer.com/oauth/access_token.php?app_id=' + appID + '&secret=' + clientSecret + '&code=' + code;

应用程序 ID 和客户端密码位于 developers.deezer.com/myapps 上,所以我不会错这两个。

对于我使用 deezer 自己提供的 php 代码示例的代码(您可以在此处查找:https://developers.deezer.com/api/oauth) 上述示例代码是一个简单的页面,它使您同意像往常一样让您的应用程序成为您的数据。 最后,您会被重定向到一个带有类似这样 url 的空页面(别担心,代码和范围是假的):

http://localhost/deezerAPI/test1.php?code=fr14364f27b39760284c5698&state=27f24b97ab810mb3176d42fh

无论如何,我已经将(假)代码 fr14364f27b39760284c5698 复制并粘贴到自制的 node js 程序中(为什么选择 nodejs?因为我更习惯使用 node 发送请求)(也,这里的值也是假的):

'use strict';

const express = require('express');
var request = require('request');

const app = new express();

var appID = '<appId>'
var clientSecret = '<clientSecret>';
var code = 'fr14364f27b39760284c5698'

var requestURI = 'https://connect.deezer.com/oauth/access_token.php?app_id=' + appID + '&secret=' + clientSecret + '&code=' + code;

request(requestURI, (error, response, body) => {
  console.log("Recieved body'" + body + "'");
});

app.listen(8081, () => {
    console.log("WebClient is up!");
});

每次我收到正文“错误代码”。 对我来说,这只能意味着两件事:

  • deezer 给我的 php 代码示例是错误的,或者我在其中写了错误的东西(例如应用程序 ID 或客户端密码),但这不太可能,因为我已经检查了几次我写的内容。

  • 我制作的节点 js 代码是错误的(以我提出示例请求的方式),或者像以前一样,我输入的信息是错误的(但我也检查了几次...... )。 我没有解决方案,所以如果你们有任何线索,请告诉我。提前致谢。

PS:如果您想查看 deezer 代码示例,请告诉我,我的 wamp 服务器上的内容与他们拥有的内容没有什么不同,但也许您会看到一些不相干的内容。

【问题讨论】:

  • 请不要在此处发帖时包含您的 appID 或 clientSecret,我已将两者都替换为占位符。
  • 如 API 文档中所述:code &gt; The code you received at the previous step。意味着您不能只是复制和使用您在示例中看到的代码!按照 API 文档中所述的步骤进行操作。
  • 你从哪里得到代码?
  • 请贴出完整代码如何获取代码

标签: php node.js httprequest deezer


【解决方案1】:

第 1 步

   https://connect.deezer.com/oauth/auth.php?app_id=YOUR_APP_ID&redirect_uri=YOUR_REDIRECT_URI&perms=basic_access,email
  • 调用此 URL(当然,用您的应用替换变量),然后用户将被重定向到 deezer 登录表单,如果客户端通过身份验证,他们将与 CODE 参数一起被重定向到 {REDIRECT_URL}。您可以获取此代码并在下一步中使用它来获取访问令牌。 * REDIRECT_URI 可能是这样的。 http://localhost/deezerAPI/test1.php。所以你可以在这个文件中得到CODE参数。

第 2 步

https://connect.deezer.com/oauth/access_token.php?app_id=YOU_APP_ID&secret=YOU_APP_SECRET&code=THE_CODE_FROM_ABOVE
  • 然后用你刚刚收到的CODE调用这个url,然后你就可以获得访问令牌。现在,您可以使用此访问令牌发出任何 API 请求。就是这样

【讨论】:

  • 嘿,成功了!这有点奇怪,因为第一个 url 将我重定向到与之前相同的页面,但这次我收到的代码有效,所以我想一切都很好。谢谢亚历山大主教
【解决方案2】:

我认为,您应该在所有变量后加上分号。

var appID = '<appId>';
var clientSecret = '<clientSecret>';
var code = 'fr14364f27b39760284c5698';

【讨论】:

  • 你也一样,不要在代码里贴敏感数据!
  • 我发布它是因为有人问我the code and scope are fake
猜你喜欢
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 2020-02-29
  • 1970-01-01
  • 2023-02-02
  • 1970-01-01
  • 2013-01-09
  • 2012-08-13
相关资源
最近更新 更多