我开始第一次尝试制作 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 未能找到解决方案。