Получение авторизационного ответа от Google OAuth 2.0 - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь получить ответ об авторизации, чтобы потом использовать его для получения доступа и обновления токенов для API YouTube с помощью Swift. Я бы предпочел не использовать внешние библиотеки, такие как AeroGear или OAuthSwift.

Я добавил приложение в консоль Google API & Services, создал ключ API и идентификатор клиента OAuth 2.0, загрузил файл списка идентификаторов клиента OAuth 2.0 и добавил его в проект. Я могу попытаться получить авторизацию, но после подтверждения разрешения доступа браузер возвращается с сообщением «Safari не может открыть страницу, потому что страница недействительна».

Я настроил схему в Info.plist для обратного вызова:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>my.bundle.id:/oauth2Callback</string>
        </array>
    </dict>
</array>

Я использую следующий код для запроса авторизации:

let url = "https://accounts.google.com/o/oauth2/v2/auth"
let client_id = youTube_client_id      // client id value from the API console
let redirect_uri = "my.bundle.id:/oauth2Callback"
let response_type = "code";
let scope = "https://www.googleapis.com/auth/youtube"
let state = ""
let login_hint = "userEmail"

let finalURLString = url + "?scope=" + scope + "&response_type=" + response_type + "&redirect_uri=" + redirect_uri + "&client_id=" + client_id + "&login_hint=" + login_hint + "state=" + state
let urlOut = URL(string: finalURLString)!

UIApplication.shared.open(urlOut, options: [:], completionHandler: nil)

Я добавил некоторый код в AppDelegate, но он так и не получил:

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {

// some code to handle the response
return true
}

Что я делаю не так? Какие-либо предложения? Проблема, кажется, с обратным вызовом, но я нигде не мог найти, как решить это для Swift. Спасибо.

...