Що таке URI переспрямування? як це стосується програми iOS для OAuth2.0?


184

Тут початківець програміст, вибачте від незнання та пояснень буде дуже приємно :)

Я намагався читати підручники для певної послуги OAuth 2.0, але я не розумію цього URI перенаправлення ... у моєму конкретному контексті, скажімо, я намагаюся створити додаток для iPhone, який використовує OAuth 2.0 для певної служби . У мене був створений ідентифікатор додатка, але мені потрібно надати URI-то для перенаправлення для створення ключа API.

Це URL-адреса, яку я повинен розміщувати десь сам ?? Як випливає з назви, я думаю, що URL-адреса для переадресації повинна когось "переспрямувати". Я лише здогадуюсь, що це URL-адреса, яку користувач перенаправляє після входу в сервіс.

Однак, навіть якщо це припущення є правильним, я не розумію ще однієї речі - як можна знову відкрити моє додаток після того, як я надішлю їх у браузер для входу користувача?

Відповіді:


194

Прочитай це:

http://www.quora.com/OAuth-2-0/How-does-OAuth-2-0-work

або ще простіше, але швидке пояснення:

http://agileanswer.blogspot.se/2012/08/oauth-20-for-my-ninth-grader.html

URI переадресації - точка входу зворотного дзвінка програми. Подумайте, як працює OAuth для Facebook - після того, як кінцевий користувач приймає дозволи, Facebook повинен викликати щось, щоб повернутися до програми, і що "щось" - це URI переспрямування. Крім того, URI переспрямування повинен відрізнятися від початкової точки входу програми.

Іншим ключовим моментом цієї головоломки є те, що ви можете запустити додаток із URL-адреси, наданої веб-перегляду . Для цього я просто дотримувався довідника тут:

http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html

і

http://inchoo.net/mobile-development/iphone-development/launching-application-via-url-scheme/

Примітка: на цих двох останніх посиланнях "http: //" працює у відкритті мобільного сафарі, але "tel: //" не працює в тренажері

у першому додатку я дзвоню

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"secondApp://"]];

У своєму другому додатку я реєструю "secondApp" (а НЕ "secondApp: //") як ім'я схеми URL-адрес, а моя компанія - ідентифікатор URL-адреси.


1
Отже, вам потрібно створити власний веб-сайт, вказаний у redirect_uri, це правильно?
huggie

1
@huggie в контексті додатків для iOS - ні, на щастя, вам не потрібен власний веб-сайт. вам просто потрібно зрозуміти, що ваш додаток для iOS можна відкрити з URL-адреси, наданої веб-браузеру. читайте: iosdevelopertips.com/cocoa/…
Девід Т.

1
@Nazerke, ймовірно, додає, що ": //" для вас уже. тож вам потрібно лише скласти схему назви
Девід Т.

1
хтось, будь ласка, виправить цю відповідь - architecture-soa-bpm-eai.blogspot.com.br/2012/08/… більше не існує
Лев

2
Привіт @DavidT. чудова відповідь. Вони стосуються лише, і сподіваюся, що ви можете врятувати мене, як налаштувати схеми для URI, які змушені використовувати http://, наприклад [YouTube, Instagram, LinkedIn]? Я намагався зареєструвати, наприклад , http://localhost/oauth2callbackредирект, і схема HTTP, локальний, або oauth2callback , але не з них працюють
Tal Zion

9

перенаправлений uri - це місце, куди буде переспрямований користувач після успішного входу у вашу програму. наприклад, щоб отримати маркер доступу до вашої програми у фейсбуці, вам потрібно подати переспрямований урі, який є не лише доменним додатком, який ви надаєте під час створення програми facebook.



2

Якщо ви використовуєте SDK Facebook, вам не потрібно заважати вводити що-небудь для перенаправлення URI на сторінці управління додатками у facebook. Просто встановіть схему URL-адрес для додатка iOS. Схема URL-адреси вашої програми повинна мати значення "fbxxxxxxxxxxx", де xxxxxxxxxxx - ваш ідентифікатор програми, визначений у facebook. Щоб налаштувати схему URL-адрес для додатка iOS, перейдіть на вкладку Інформація про налаштування свого додатка та додайте Тип URL-адреси.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.