Как прослушивать URI перенаправления OAuth2 для собственного приложения Cocoa

Я начинаю свой первый набег на создание приложения для Mac, и первым делом я аутентифицирую свое приложение с помощью OAuth с Soundcloud. Отправить запрос на авторизацию просто, но я застрял в том, как прослушать перенаправление обратно из Soundcloud.

Я настроил свою схему URL-адресов в info.plist и настроил свое приложение для прослушивания входящих запросов, но когда я пытаюсь зарегистрироваться, я не получаю ответа. Я проверил 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-запросы? И если да, то как посредник узнает, как подключиться к моей машине? Извините, если это простые или ошибочные вопросы, но, как я уже говорил ранее, это мой первый опыт в чем-то подобном, и мой гугл-фу не смог найти решение.


person litebrite    schedule 01.06.2012    source источник


Ответы (2)


Обычно поставщики услуг 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.

Лучшие и читайте документы.

person Artem Oboturov    schedule 01.06.2012

Вы можете использовать NSWebView для этого. Я знаю, что это звучит не очень элегантно, так как на самом деле вам не нужен «представление», но, насколько я знаю, это самое простое решение для получения перенаправлений.

person bijan    schedule 01.06.2012