自动Soundcloud PHP Api身份验证,无需用户交互
在我的应用程序中,我希望将SoundCloudAPI与我自己的Soundcloud用户一起使用。Soundcloud API认证过程涉及将用户重定向到Soundcloud主页,登录并授权应用程序,以便页面可以为该用户使用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://**
$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'