0

我开始第一次尝试制作 mac 应用程序,而首要任务是使用带有 Soundcloud 的 OAuth 对我的应用程序进行身份验证。发送授权请求很简单,但我遇到的问题是如何侦听从 Soundcloud 返回的重定向。

我已经在 info.plist 中设置了我的 URL 方案并将我的应用程序设置为侦听传入的请求,但是当我尝试注册时,我没有得到响应。我已经用 safari 测试了 URL,它运行良好。

这是我的应用程序委托的代码片段:

- (void) applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];
[appleEventManager setEventHandler:self
                       andSelector:@selector(handleGetURLEvent:withReplyEvent:)
                     forEventClass:kInternetEventClass andEventID:kAEGetURL];

[[NXOAuth2AccountStore sharedStore] setClientID:@"myClientID" 
                                         secret:@"superSecretSecret"
                               authorizationURL:[NSURL URLWithString:@"https://soundcloud.com/connect"]
                                       tokenURL:[NSURL URLWithString:@"https://api.soundcloud.com/oauth2/token"]
                                    redirectURL:[NSURL URLWithString:@"myApp://connect"]
                                 forAccountType:@"iHopeThisWorks"];

}

- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent
{
NSURL *url = [NSURL URLWithString:[[event paramDescriptorForKeyword:keyDirectObject] stringValue]];
}

我的猜测是 soundcloud 不知道在哪里可以找到 myApp://connect 因为它只存在于我的本地机器上。那么我是否需要创建一些中介,例如处理 http 请求的 Web 服务?如果是这样,中介如何知道如何连接回我的机器?对不起,如果这些是基本的或被误导的问题,但就像我之前说的,这是我第一次尝试这样的事情,我的 google-fu 未能找到解决方案。

4

2 回答 2

3

通常 OAuth 服务提供商应该Resource Owner Password Credentials Grant为桌面实施 - 在您的情况下,他们没有。

但是他们已经对 OAuth2Client 做了一个包装器——在https://github.com/soundcloud/CocoaSoundCloudAPI上查找它。文档位于http://developers.soundcloud.com/docs#authentication

回答您的问题,URI 是myApp://connect您的应用程序是否按字面意思调用myApp。在 vimeo 上查看开发人员的视频:http: //vimeo.com/28715664

最好的并阅读文档。

于 2012-06-01T13:02:14.393 回答
0

你可以使用 a NSWebView。我知道这听起来不太优雅,因为您实际上并不需要“视图”,但据我所知,这是获取重定向的最简单解决方案。

于 2012-06-01T12:15:53.607 回答