我开始第一次尝试制作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在寻找解决方案时失败了。
答案 0 :(得分:3)
通常,OAuth服务提供商应为桌面实施Resource Owner Password Credentials Grant
- 在您的情况下,他们没有。{/ p>
但是他们已经在OAuth2Client上做了一个包装 - 在https://github.com/soundcloud/CocoaSoundCloudAPI上查找它。文档位于http://developers.soundcloud.com/docs#authentication。
如果您的应用程序按字面myApp://connect
调用,则回答您的问题URI为myApp
。请参阅开发人员关于vimeo的视频:http://vimeo.com/28715664。
最佳和阅读文档。
答案 1 :(得分:0)
您可以使用NSWebView
。
我知道这听起来不太优雅,因为你实际上并不需要“视图”,但据我所知,这是获取重定向的最简单的解决方案。