Ответ 1
Почти во всех проектах я использовал AFNetworking, потому что он очень мощный - зачем изобретать колесо каждый раз:)
Кроме того, он также имеет OAuth2Manager, который довольно прост в реализации и работает рок-твердо.
Я пытаюсь целую вечность, чтобы получить интеграцию OAuth 2.0 в моем приложении iPhone.
Я искал и искал библиотеки, учебные пособия и т.д. Но они все привели меня в тупик. Главная проблема заключается в том, что у них либо устаревший код, либо они просто не работают, либо у них есть документация, но его очень трудно следовать (для меня в любом случае...).
Лучшая библиотека OAuth2, которую я смог найти для Xcode, таков: https://github.com/nxtbgthng/OAuth2Client
Но основная проблема с этим заключается в том, что он, кажется, ничего не делает... Я следил за всей документацией и инструкциями, которые были с ней, но после создания и запуска он, похоже, не аутентифицируется...
Итак, я думаю, что мой главный вопрос: кто-нибудь знает какие-либо хорошие и обновленные учебники OAuth 2.0 для Xcode или любых библиотек для такой вещи?
Потому что я действительно боюсь в данный момент....: (
Спасибо за ваше время, Дэн.
ОБНОВЛЕНИЕ 2: Вот мой код (Идентификатор приложения и секрет удалены для обеспечения безопасности):
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
oauthClient = [[LROAuth2Client alloc]
initWithClientID:@"MY_CLIENT_ID"
secret:@"MY_APP_SECRET"
redirectURL:[NSURL URLWithString:@"app://instagram-callback/?code="]];
oauthClient.delegate = self;
oauthClient.userURL = [NSURL URLWithString:@"https://api.instagram.com/oauth/authorize/?client_id=ab6dc96859bf43b3a488199ec72d9964&redirect_uri=app://instagram-callback/?code=&response_type=code"];
oauthClient.tokenURL = [NSURL URLWithString:@"https://api.instagram.com/oauth/access_token/"];
[oauthClient authorizeUsingWebView:myWebView];
}
- (void)oauthClientDidReceiveAccessToken:(LROAuth2Client *)client;
{
LROAuth2AccessToken *token = client.accessToken;
[NSKeyedArchiver archiveRootObject:token toFile:@"Path/To/MyAccessToken"];
}
- (void)checkAccessTokenForExpiry:(LROAuth2AccessToken *)accessToken;
{
if ([accessToken hasExpired]) {
[oauthClient refreshAccessToken:accessToken];
}
}
- (void)oauthClientDidRefreshAccessToken:(LROAuth2Client *)client;
{
LROAuth2AccessToken *token = client.accessToken;
[NSKeyedArchiver archiveRootObject:token toFile:@"Path/To/MyAccessToken"];
}
Почти во всех проектах я использовал AFNetworking, потому что он очень мощный - зачем изобретать колесо каждый раз:)
Кроме того, он также имеет OAuth2Manager, который довольно прост в реализации и работает рок-твердо.
В Документация по Instagram говорит, что существует два способа аутентификации. Один Explicit (для серверной версии auth) и один неявный, для auth на клиенте (без сервера).
Вы используете Явное внутри приложения, попробуйте изменить userURL
на https://instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
и tokenURL
на http://your-redirect-uri#access_token=ACCESS-TOKEN
.
Скорее всего, вы не можете использовать секрет клиента в приложении iPhone (поскольку секрет клиента не может быть защищен), вам необходимо пройти аутентификацию через мобильное приложение или мобильный веб-сайт служб, а затем обработать URL-адрес перенаправления, согласно этой ссылке Я нашел на сайте разработчика Uber api: http://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified
На этой странице есть какой-то код, который я тестирую сейчас: https://medium.com/swift-programming/learn-nsurlsession-using-swift-ebd80205f87c
В нижней части этой страницы есть также хорошая информация: http://www.idmworks.com/blog/entry/getting-started-with-oauth2client-on-ios
Недавно я сделал простой pod https://github.com/kohtenko/KOSocialOAuth.
Вы можете легко соединить Instagram
, VK
или LinkedIn
. Не стесняйтесь отправлять запрос Pull с любой другой конечной точкой OAuth.
Обратите внимание на использование API-интерфейсов Instagram: https://github.com/shyambhat/InstagramKit. В комментариях я вижу, что у вас возникли проблемы с перенаправлением - посмотрите в URI Xcode Redirect URI на помощь в этом: Что такое URI перенаправления? как это применимо к iOS-приложению для OAuth2.0?