自动Soundcloud PHP Api身份验证,无需用户交互

自动Soundcloud PHP Api身份验证,无需用户交互,php,api,authentication,oauth-2.0,soundcloud,Php,Api,Authentication,Oauth 2.0,Soundcloud,在我的应用程序中,我希望将SoundCloudAPI与我自己的Soundcloud用户一起使用。Soundcloud API认证过程涉及将用户重定向到Soundcloud主页,登录并授权应用程序,以便页面可以为该用户使用API 我想自动化整个过程,因为我自己的用户是唯一获得身份验证的用户。可能吗 以下是我目前的代码: $soundcloud = new \Services_Soundcloud( '**', '**', 'http://**

在我的应用程序中,我希望将SoundCloudAPI与我自己的Soundcloud用户一起使用。Soundcloud API认证过程涉及将用户重定向到Soundcloud主页,登录并授权应用程序,以便页面可以为该用户使用API

我想自动化整个过程,因为我自己的用户是唯一获得身份验证的用户。可能吗

以下是我目前的代码:

    $soundcloud = new \Services_Soundcloud(
        '**',
        '**',
        'http://**'
    );

    $authorizeUrl = $soundcloud->getAuthorizeUrl();

    $accessToken = $soundcloud->accessToken();

    try {
        $me = json_decode($soundcloud->get('me'), true);
    } catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
        exit($e->getMessage());
    }
但是行
$accessToken=$soundcloud->accessToken()引发异常:

The requested URL responded with HTTP code 401.
500 Internal Server Error - Services_Soundcloud_Invalid_Http_Response_Code_Exception 

我也在寻找同样的东西,但根据(在没有SoundCloud Connect屏幕段落的情况下检查身份验证):

..并且Javascript也不支持

我尝试使用python进行身份验证:

# create client object with app and user credentials
client = soundcloud.Client(client_id='YOUR_CLIENT_ID',
                           client_secret='YOUR_CLIENT_SECRET',
                           username='YOUR_USERNAME',
                           password='YOUR_PASSWORD')
..然后上传python方法:

# upload audio file
track = client.post('/tracks', track={
    'title': 'This is my sound',
    'asset_data': open('file.mp3', 'rb')
})
而且效果很好

因此,目前,您有两种方法:

  • 使用另一种语言,Python或Ruby(唯一真正支持此功能的2个sdk),或者使用一个小型Python/Ruby脚本作为满足此特定需求的桥梁
  • 将此函数添加到PHPSDK(我正在尝试快速完成,如果成功,我将与大家分享;)
  • 大家好

    在这里,我将分享我使用SoundCloudAPI(PHP)的经验

    见我的问题:

    我必须检查$\u GET['code']值。但奇怪的是,这里面什么都没有 $\u GET['code']这是空的。“声音云”正在返回“声音云” 请求的URL响应了HTTP代码“0”错误。那次我是 在WAMP本地主机上测试Soundcloud

    我找到了一个解决方案来修复“请求的URL” 已响应HTTP代码“0”问题。我下载了“cacert.pem”文件 并放入我们的演示项目文件夹(insideservices/Soundcloud/)。 然后,在我在“类服务\u Soundcloud”中添加了一些代码之后

    function protected function _request($url, $curlOptions = array()).
    // My code in side function
    $curlPath = realpath(getcwd().'\Services\cacert.pem');         
    $curlSSLSertificate = str_replace("\\", DIRECTORY_SEPARATOR, $curlPath);        
    curl_setopt($ch, CURLOPT_CAINFO, $curlSSLSertificate);
    
    已保存“class Services\u Soundcloud”文件并在live server上移动。之后 将我的项目从WAMP移动到Live server,然后我再次开始检查它。 当我打开index.php时,会要求我登录

    连接一切正常后,我通过

    但是一个新的问题开始出现,那就是我的访问令牌 一次又一次地过期。然后我使用session:D

    现在一切都很好。我可以从SC服务器获取我的所有详细信息,跟踪所有信息


    希望它能帮助您与Soundcloud API一起战斗

    它在Python和Ruby SDK中的实现没有什么神奇之处。 发生的情况是
    POST
    请求被发送到
    http://api.soundcloud.com/oauth2/token
    具有以下参数:

       client_id='YOUR_CLIENT_ID'
       client_secret='YOUR_CLIENT_SECRET'
       username='YOUR_USERNAME'
       password='YOUR_PASSWORD'
    
    内容类型:application/x-www-form-urlencoded

    响应正文包含
    access\u令牌
    ,可用于进一步授权您的请求。因此,您对
    /me
    端点的
    GET
    请求将如下所示:
    /me?oauth\u令牌=您的\u访问\u令牌和客户端\u id=您的\u客户端\u id
    。(我认为,
    client\u id
    在这里是多余的,但他们的所有应用程序都在不断添加它)


    这是我为演示而创建的邮递员文档:

    我同意Strae的观点。PHPSDK不能完美地工作。当我们试图获取访问令牌时,它抛出了401错误。我必须说,我未能在php SDKHi Alp中添加此功能。请检查我的答案,并告知我它是否适合您。
    // Get access token
    try {
        $accessToken = $soundcloud->accessToken($_GET['code']);
    } catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
        exit($e->getMessage());
    }
    
    function protected function _request($url, $curlOptions = array()).
    // My code in side function
    $curlPath = realpath(getcwd().'\Services\cacert.pem');         
    $curlSSLSertificate = str_replace("\\", DIRECTORY_SEPARATOR, $curlPath);        
    curl_setopt($ch, CURLOPT_CAINFO, $curlSSLSertificate);
    
    I use my Facebook account to login.
    
    after login it was asking to connect with Soundcloud
    
    $me = json_decode($soundcloud->get('me'));
    
    // code for access token
    $code = $_GET['code'];
    // Get access token
    try {
        if(!isset($_SESSION['token'])){
            $accessToken = $soundcloud->accessToken($code);
            $_SESSION['token'] = $accessToken['access_token'];
        }else{
            $soundcloud->setAccessToken($_SESSION['token']);
        }   
    } catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
        exit($e->getMessage());
    }
    
       client_id='YOUR_CLIENT_ID'
       client_secret='YOUR_CLIENT_SECRET'
       username='YOUR_USERNAME'
       password='YOUR_PASSWORD'