通过 Unity 连接移动应用程序时如何从 Soundcloud 接收回调

How to receive a callback from Soundcloud when connecting by Unity for mobile apps

我有一个用 Unity 制作的应用程序,可以让您混合歌曲。我正在为 Android 和 iOS.

开发一个 "upload to Soundcloud" 按钮以包含在此应用程序中

将用户引导至 SoundCloud 的 "Connect" window 后,我无法收到来自 Soundcloud 的响应。我用这样的东西打开 Soundcloud 连接页面。浏览器打开正确,我可以用这个登录

    Application.OpenURL("https://soundcloud.com/connect?"
            + "client_id=[my_client_id]"
            + "&redirect_uri=my.app://callback"
            + "&display=popup"      
            + "&response_type=token"
            + "&scope=non-expiring");

我已经为我的 iOS 和 Android 应用程序创建了一个自定义方案,以便在连接后重定向到我的应用程序。这也有效,我的应用程序在点击 Soundcloud 页面中的 "Connect" 后重新打开。

我现在需要身份验证代码或令牌来请求访问令牌才能上传我的歌曲。但是在我的应用程序中被重定向后,我不知道如何接收验证码。肯定是和://callbacklink有关,但是没找到怎么弄。我需要为此编写特定于平台的代码吗?

如有任何帮助,我们将不胜感激!

回调应该包含一个代码供您用来创建令牌

调用回调 URL 时会附加一个代码:

http://YOUR_CALLBACK_URL?code=CODE_RETURNED_FROM_SOUNDCLOUD

提取从 url 返回的代码后,您可以使用它向 soundcloud 发出请求以获取授权令牌

示例请求使用 curl(使用 PHP)

curl -X POST 'https://api.soundcloud.com/oauth2/token' 
-F 'client_id=YOUR_CLIENT_ID' 
-F 'client_secret=YOUR_CLIENT_SECRET' 
-F 'grant_type=authorization_code' 
-F 'redirect_uri=YOUR_CALLBACK_URL' 
-F 'code=THE_VALUE_OF_THE_CODE_RETURNED'


$data = array(
  'code' => VALUE_OF_THE_CODE_RETURNED,
  'client_id' => YOUR_CLIENT_ID,
  'client_secret' => YOUR_CLIENT_SECRET,
  'redirect_uri' => YOUR_CALLBACK_URL,
  'grant_type' => 'authorization_code'
);

我将以下选项与 curl

一起使用
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_HEADER, true);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  curl_setopt($ch, CURLOPT_VERBOSE, 1);

如果成功你应该会收到这样的东西(例子是JSON)

{
"access_token":"ACCESS_TOKEN_VALUE",
"expires_in":21599,
"scope":"*",
"refresh_token":"REFRESH_TOKEN_VALUE"
}

感谢 SteveE 的回复,但这不是我的问题。

问题是我的 Android 和 iOS 应用程序都需要一个深度链接实现来接收来自 Soundcloud 的回调。我需要一些东西来捕捉 onCreate 方法中的意图,该方法包含 Soundcloud 在 Android 上发送的数据,并捕捉对 application:openURL:options 的调用:iOS.[=10 上的 du UIApplicationDelegate =]

为此,我们需要两个平台的本地插件,现在我们可以接收 Soundcloud 回调并检查我们的授权码以继续上传歌曲的过程。