Soundcloud (Oauth2) API 获取访问令牌失败

2024-02-26

我正在尝试根据 Soundcloud 登录对我的网站上的用户进行授权。

它使用 Oauth 身份验证。

用户必须单击我网站上的按钮,然后重定向到 Soundcloud 网站并登录。

之后,用户被重定向回我的网站,我必须在其中获取 accessToken。

失败并显示消息:请求的 URL 以 HTTP 代码 0 进行响应。

如果你需要的话,我已经抛弃了卷曲的东西:

 [data]; False
 [info][url]                    : https://api.soundcloud.com/oauth2/token
       [content_type]           ; NULL
       [http_code]              : 0
       [header_size]            : 0
       [request_size]           : 0
       [filetime]               : -1
       [ssl_verify_result]      : 0
       [redirect_count]         : 0
       [total_time]             : 0.031
       [namelookup_time]        : 0
       [connect_time]           : 0.031
       [pretransfer_time]       : 0
       [size_upload]            : 0
       [size_download]          : 0
       [speed_download]         : 0
       [speed_upload]           : 0
       [download_content_length]: -1
       [upload_content_length]  : -1
       [starttransfer_time]     : 0
       [redirect_time]          : 0
       [certinfo]               []

我执行的代码:

    $soundcloud = new SoundcloudModel('*****', '*****', '*****');

    try {
        $accessToken = $soundcloud->accessToken($this->request['code']);
    } catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
        exit($e->getMessage());
    }

Soundcloud API代码:

protected function _getAccessToken($postData, $curlOptions = array())
{
    $options = array(CURLOPT_POST => true, CURLOPT_POSTFIELDS => $postData);
    $options += $curlOptions;
    $response = json_decode(
        $this->_request($this->getAccessTokenUrl(), $options),
        true
    );

    if (array_key_exists('access_token', $response)) {
        $this->_accessToken = $response['access_token'];

        return $response;
    } else {
        return false;
    }
}

protected function _request($url, $curlOptions = array())
{
    $ch = curl_init($url);
    $options = $this->_curlOptions;
    $options += $curlOptions;

    if (array_key_exists(self::CURLOPT_OAUTH_TOKEN, $options)) {
        $includeAccessToken = $options[self::CURLOPT_OAUTH_TOKEN];
        unset($options[self::CURLOPT_OAUTH_TOKEN]);
    } else {
        $includeAccessToken = true;
    }

    if (array_key_exists(CURLOPT_HTTPHEADER, $options)) {
        $options[CURLOPT_HTTPHEADER] = array_merge(
            $this->_buildDefaultHeaders(),
            $curlOptions[CURLOPT_HTTPHEADER]
        );
    } else {
        $options[CURLOPT_HTTPHEADER] = $this->_buildDefaultHeaders(
            $includeAccessToken
        );
    }

    curl_setopt_array($ch, $options);

    $data = curl_exec($ch);
    $info = curl_getinfo($ch);

    print_r(array('ch'=>$ch, 'data'=>$data, 'info'=>$info));

    curl_close($ch);

    $this->_lastHttpResponseHeaders = $this->_parseHttpHeaders(
        substr($data, 0, $info['header_size'])
    );
    $this->_lastHttpResponseBody = substr($data, $info['header_size']);
    $this->_lastHttpResponseCode = $info['http_code'];

    if ($this->_validResponseCode($this->_lastHttpResponseCode)) {
        return $this->_lastHttpResponseBody;
    } else {
        throw new Services_Soundcloud_Invalid_Http_Response_Code_Exception(
            null,
            0,
            $this->_lastHttpResponseBody,
            $this->_lastHttpResponseCode
        );
    }
}

抱歉发了这么长的帖子,希望大家能帮帮我!


Got it.

我发现 PHP 使用的 cURL 使用过时的证书包(至少在 Windows 上)。

我已经从以下位置下载了最新的证书包:http://curl.haxx.se/docs/caextract.html http://curl.haxx.se/docs/caextract.html并添加了以下 cURL 选项:

curl_setopt($ch, CURLOPT_CAINFO, 'C:/absolute/path/to/cacert.pem');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Soundcloud (Oauth2) API 获取访问令牌失败 的相关文章

  • PHP runkit_function_rename 不起作用?

    这段代码不起作用 为什么不 我真正想要的是这个 我正在使用一个具有功能的系统 当我在本地主机上时 我希望该函数做一些不同的事情 我想用自己的东西覆盖该函数 也欢迎所有替代方案 您是否安装了 PECL 扩展 http www php net
  • 用于检索名人信息的 API [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • PDF:在现有 PDF 文件中插入一行文本

    我有一个 PDF 文件 我希望在所有页面 前两页除外 的页脚上添加一行纯文本 不是徽标或类似内容 有谁有一个如何做到这一点的例子 用任何语言 Update 原始 PDF 是用 Scribus 制作的 我可以完全控制它 因此 如果更容易进行查
  • 将 Web API 添加到 asp.net MVC 项目时出现问题(追溯)

    我正在 Visual Studio 2013 中使用 asp net mvc 迈出第一步 但遇到了一个奇怪的问题 我以 MVC 的形式启动了我的项目 并且没有选中 Web API 框来包含核心参考 不过现在我想使用 Web API 功能 我
  • 升级到 Yosemite 后 Apache 配置损坏

    昨天我升级到 Yosemite 现在我的 Web 开发本地配置不再起作用 我设法在下面设置了一个 userdir Users user public html我可以通过以下方式访问所有网站localhost user websitename
  • 如何在时事通讯中发送图像?

    谁能告诉我如何将图像作为时事通讯的主体部分发送 我如何从后端添加任何图像 以便当我向订阅者发送新闻通讯时 我想要显示的图像作为邮件的主体部分 实际上我想说的是 我有一个可以输入文本的表单 并且该文本在时事通讯中效果很好 现在我也想在表单中添
  • axios响应不显示数据

    我正在学习使用 Axios 但输出如图所示 当我使用 fetch 时 输出正常 我该如何修复 Axios const axios require axios default const url https jsonplaceholder t
  • Laravel eloquent 获取关系数

    我使用 Laravel 5 3 我有 2 张桌子 Articles id cat id title And Category id parent id title 我在模型中定义了我的关系 Article model public func
  • 如何使用 Libsodium-PHP 加密/解密 AES

    我需要用 PHP 加密 解密数据 我对此完全陌生 但是我读到 Libsodium PHP 是 AES 加密的最佳工具 就像我研究过的其他 PHP 加密库一样 Libsoduim PHP 似乎几乎没有提供如何使用该库的文档 我能够找到 任何有
  • 什么是 no-debug-non-zts-20090626?

    In php ini I have extension dir usr lib php extensions 然而 运行php config gives extension dir usr lib php extensions no deb
  • PHPmailer 发送垃圾邮件

    我刚刚更新了联系表单以使用 PHPMailer 来阻止电子邮件被标记为垃圾邮件 但没有成功 我正在使用这是一个相当简单的设置 但它仍然会进入人们的垃圾邮件 这是我的脚本 我想知道是否有人能说出哪里出了问题 include once inc
  • 使用返回哈希数组的外部 PHP SOAP Web 服务的 C# .NET 客户端存在问题

    我正在编写一个需要调用外部 Web 服务的 NET Web 应用程序 我提供的文档包括 PHP 代码示例 我可以使用提供给我的 WSDL 地址在 VS2010 中成功创建 Web 引用 并且使用 fiddler 我可以看到正在发送和接收预期
  • 在评论中查找不同风格的日期

    我还有一个问题要问preg match 我有一个表 其中评论的日期写在评论本身内 手动 现在我需要提取该日期并将其放置在不同的列中 我发现评论和日期的样式如下 id warning sent warning date 6109 2011 0
  • 我们真的需要“oauth_nonce”吗?

    是的 我知道 oauth 是如何工作的 但我不知道为什么我们需要oauth nonce 规范规定时间戳 随机数必须是唯一的才能解决重放攻击 但是如果consumer key够独特吗 If consumer key不唯一 怎么找到对应的oau
  • WordPress 子主题 style.css 不起作用

    我创建了一个与父主题格式相同的文件结构 我的父主题称为 Alpine Alpine 中有一个functions php 和style css 文件 似乎没有任何其他 style css 文件 我创建了一个名为 Alpine child 的目
  • 在 Symfony 中重定向之前访问调试(分析器)信息

    提交表单后 我通常将用户重定向到另一个页面 表单本身除外 因此我丢失了配置文件 调试信息 如日志 我的意思是 单击 调试工具栏 后 我会获得有关重定向后请求的信息 但我确实知道 Symfony 保留有关上一页的信息 我的意思是它不会忘记它
  • 如何从 php 中的字符串中删除 unicode 字符 (LEFT_TO_RIGHT_MARK)

    我试图在将字符串编码为 JSON 之前从字符串中删除从左到右标记 u200e 和从右到左标记 u200f 以下两者似乎都不起作用 s mb ereg replace u200e s s preg replace u200e u s s pr
  • 在 VS Code 中调试 PHPUnit 测试?

    我最近配置了 VS code 以使用 xdebug 调试 PHP 它与我的应用程序代码一起可靠地工作 但是当我使用 PHPunit 运行单元测试时 我的断点被忽略 我的服务器在一个流浪盒子内运行 My php ini文件包含以下行 xdeb
  • 获取本周星期一和星期五的日期 (PHP)

    如何获取本周周一和周五的日期 我有以下代码 但如果当天是星期日或星期六 则会失败 current day date N days to friday 5 current day days from monday current day 1
  • 使用 PDO 的基于 PHP 类的用户系统 - 调用非对象上的成员函数prepare()

    我做了相当多的研究 故障排除和搜索 试图解决我的问题 但没有运气 所以这是错误 调用非对象上的成员函数prepare 生成此错误的代码位于我的用户 Auth 类中 如下所示 this gt dbManager gt db gt prepar

随机推荐

  • Microsoft Hive ODBC 驱动程序 2.1.5 超时

    我最近升级到 Microsoft hive odbc 驱动程序版本 2 01 05 1006 于 2016 年 12 月 8 日发布 我的代码适用于驱动程序的先前版本 1 0 现在 当运行我的代码时 我不断收到以下错误 错误 HY000 M
  • PyCharm 的优化导入也可以按字母顺序排列吗?

    我很喜欢 PyCharm 对 Python 导入的优化 以及删除未使用的导入 遵循 PEP8 为它们提供了合理的布局并使它们更易于阅读 有没有办法让 PyC harm 额外按字母顺序排列它们 这将使扫描速度更快 至少对我来说 PyCharm
  • 在 ggplot2 中显式设置面板大小(不仅仅是绘图大小)

    是否可以在 ggplot 中显式设置面板大小 即灰色网格面板 我想象 但找不到 有一些 ggplot 扩展允许类似于panel width unit 3 in panel height unit 4 in 我已经看到了设置整个图大小的解决方
  • 在 Eclipse 中分离编辑器

    有没有办法将编辑器与主 Eclipse 窗口分离 我知道这对于 netbeans 是可能的 但到目前为止我还无法弄清楚如何使用 eclipse 做到这一点 如果可能的话 选择 窗口 新窗户 似乎是分离编辑器的密切替代者 此命令创建一个新的
  • FCM 注册 ID 令牌的最大长度是多少?

    使用 新 Firebase Cloud Messaging 我想可靠地保存客户端设备registration id令牌到本地服务器数据库 以便服务器软件可以向它们发送推送通知 为了保存 100 生成的客户端注册令牌 我应该使用的数据库字段的
  • LD_LIBRARY_PATH 优先级和编译问题

    我正在尝试在Linux机器上安装一些软件 python的rpy2包 特别是rpy2 robjects 如果重要的话 我需要该软件在我的本地空间中查找其共享库 而不是在 usr lib64 等全局空间中查找 我没有这台机器的管理员权限 我的问
  • 如何将 Prisma 与 Electron 结合使用

    我正在使用 Prisma sqlite DB 和 Electron Angular 应用程序 一切正常 直到我尝试创建记录 我在控制台中多次重复收到此错误 https i stack imgur com I0beD png 这是我的 sch
  • MySQL 配置的 JDBC url 使用 utf8 字符编码

    MySQL 5 6 配置 我已经配置了 etc mysql my cnf手动使用utf8 见下文 mysqld character set server utf8 character sets dir usr share mysql cha
  • 如何将命令行参数传递给 Gradle Kotlin DSL

    这是 Groovy 的一个示例 它准确地代表了我想要实现的目标 Command line gradlew jib PmyArg hello build gradle kts task myTask doFirst println myArg
  • RecyclerView 以编程方式单击

    我正在尝试以编程方式单击 recyclerView 的一项 我在用着 recyclerView findViewHolderForAdapterPosition index itemView performClick 当索引属于可见项时 这
  • 如何将 Google Analytics 与 next.js 应用程序一起使用?

    我将 styled components 与 next js 一起使用 因此我的样式需要在服务器端渲染 因此如何将 google 分析添加到我的网站 我检查了next js 谷歌分析示例 https github com zeit next
  • 使用 pandas 查找数据框列中的前 3 个

    我有一个时间序列数据集 如下所示 Date Newspaper City1 City2 Region1Total City3 City4 Region2Total 2017 12 01 NewsPaper1 231563 8696 2402
  • 矢量化照片:寻找合适的算法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用CSS动画移动文本?

    有什么想法为什么这个动画不起作用吗 div move from top to bottom div http jsfiddle net vdb3ofmL 1 http jsfiddle net vdb3ofmL 1 你应该position正
  • Rails:如何访问应用程序控制器中的方法?

    我想这是菜鸟范围问题 class ApplicationController lt ActionController Base protect from forgery locations get locations def get loc
  • 获取体式项目 ID

    我试图找出如何从主网络应用程序获取工作区和项目 ID 我似乎无法在任何地方找到它们 我正在尝试编写一个 VB Net 应用程序 并尝试从 API 中获取除 400 Bad request 之外的一些信息 如果我有这些 ID 我可能会走得更远
  • Sencha vs Ionic vs Jquery Mobile vs Appcelerator Titanium [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我在 HTML5 Javascript jQuery AngularJS 方面有很好的经验 我即将开发一个混合移动应用程序 我只是想知道其中哪一
  • FROM 子句中的 JPA 子查询可能吗?

    我在 JPA 方面遇到了一些问题 考虑这种情况 表 A id a 表B id b id a 我需要的是这样的查询 Select a c quantity from A as a Select Count as quantity from B
  • Symfony2 DoctrineFixturesBundle 命名空间错误

    我的灯具捆绑有一个大问题 我无法解决 我 按照预期的步骤进行操作 将行添加到 deps 文件 安装它们 在自动加载中注册它们并 应用程序内核 当我尝试只跑步时app console 它打破了 Fatal error Class Doctri
  • Soundcloud (Oauth2) API 获取访问令牌失败

    我正在尝试根据 Soundcloud 登录对我的网站上的用户进行授权 它使用 Oauth 身份验证 用户必须单击我网站上的按钮 然后重定向到 Soundcloud 网站并登录 之后 用户被重定向回我的网站 我必须在其中获取 accessTo