绕过SoundCloud API的SCLoginViewController,改为使用openURL

时间:2014-09-20 23:30:50

标签: ios oauth soundcloud

SoundCloud API / SDK开发者,

似乎SoundCloud iOS SDK有点长,即SCLoginViewController。它显然需要更新,并且在出现时会出现装饰性问题。

相反,我正在考虑在SC准备的网址上使用openURL:

[SCSoundCloud requestAccessWithPreparedAuthorizationURLHandler:^(NSURL* preparedURL) {
    [[UIApplication sharedApplication] openURL:preparedURL];
}];

然后抓住结果我的iOS应用程序的handleURL调用(因为URL返回

myapp://oauth?code=0a83...

所以我对SC API开发的问题是:我如何将NSURL放到[SCSoundCloud account]返回适当的帐户。

提前致谢!!

2 个答案:

答案 0 :(得分:0)

好的,所以在深入了解OAuth2Client(https://github.com/nxtbgthng/OAuth2Client)之后,我有了答案......

典型oauth流的第一步是使用param指定重定向URL的GET。用户通过此初始GET进行身份验证后,主机会使用其他URL参数code重定向到指定的URL。在iOS上,这通常采用myapp://oauth&code=ZZZZ

的形式

此时,应用程序会提取代码并将其用作后续POST请求的参数,然后返回oauth访问令牌(access_token)。使用OAuth2Client的流程,当您的应用通过UIApplicationDelegate的myapp://oauth&code=ZZZZ获取网址application:openURL:sourceApplication:annotation:(id)时,您需要随后致电:

[[NXOAuth2AccountStore sharedStore] handleRedirectURL:inURL];

这将使OAuth2Client拉出code参数,形成新的POST URL和参数,在内部执行POST,处理响应(挖出access_token等),然后发送通知NXOAuth2AccountDidChangeAccessTokenNotification

在SoundCloud iOS SDK中,他们的SCLoginViewController会抓取myapp://oauth&code=ZZZZ步,这就是为什么你永远不会看到这一步。

答案 1 :(得分:0)

我在使用SoundCloud SDK及其所有依赖项时遇到了一些麻烦。我没有使用SCSoundCloud requestAccessWithPreparedAuthorizationURLHandler,而是想自己准备网址(除了使用openURL而不是SDK方法)。

如何准备网址?即打开SoundCloud的URL是什么样的?