Регистрация через Instagram


#1

Пытаюсь сделать сделать регистрацию через Instagram, но ничего толком не выходит.
Перебрал несколько вариантов и всегда останавливается на одном и том же этапе.
В сафари открывается страница инстаграмма, ввожу логин и пароль - успешно вхожу. Все. Возврата в приложение нет.

Если собрать ссылку вручную и открыть “ручками” в браузере, то также запрашивает логин и пароль и адресная строка после авторизации имеет вид:
https://www.instagram.com/#access_token=4746584993.***************a38a0cc72576066bfc7

Звездочки поставил я сам.
Т.е. токен получаю, но как вернуться в приложение… я не понимаю.

Самый толковый и понятный материал с примером готового проекта я нашел здесь:

Также в последнем комментарии человек отмечает ту же самую проблему что и у меня.
Автор что-то говорит, но если честно, то я не понял о чем он отвечает.

Ссылка на проект:


#2

Выше описание пройдено. СТоит только написать на swiftbook как решение находится.
Проблема была в redirect_url

Сейчас новая проблема. Токен получаю, но webview не закрывается…


#3

Сейчас как итог не могу получить данные пользователя. ПОлучаю ошибку:
Received data:
[“error_type”: OAuthException, “error_message”: Matching code was not found or was already used., “code”: 400])

    let redirectURI = INSTAGRAM_IDS.INSTAGRAM_REDIRECT_URI
    let clientID = INSTAGRAM_IDS.INSTAGRAM_CLIENT_ID
    let clientSecret = INSTAGRAM_IDS.INSTAGRAM_CLIENTSERCRET
    let code = "{RECEIVED_CODE}"
    
    let urlString = "https://api.instagram.com/oauth/access_token"
    let url = NSURL(string: urlString)!
    let paramString  = "client_id=\(clientID)&client_secret=\(clientSecret)&grant_type=authorization_code&redirect_uri=\(redirectURI)&code=\(code)&scope=\(INSTAGRAM_IDS.INSTAGRAM_SCOPE)"
    
    let request = NSMutableURLRequest(url: url as URL)
    request.httpMethod = "POST"
    request.httpBody = paramString.data(using: String.Encoding.utf8)!
    
    let task =  URLSession.shared.dataTask(with: request as URLRequest)  { (data, response, error) in
        do {
            if let jsonData = data {
                if let jsonDataDict  = try JSONSerialization.jsonObject(with: jsonData, options: JSONSerialization.ReadingOptions.allowFragments) as? [String: AnyObject] {
                    NSLog("Received data:\n\(jsonDataDict))")
                }
            }
        } catch let err as NSError {
            print(err.debugDescription)
        }
    }
    
    task.resume()

По интернету гуглил, у многих эта ошибка появляется с середины 2016 года.
Как исправить толком не нашел. Сообщество может быть подскажет что-то?


#4

[“error_type”: OAuthException, “error_message”: Matching code was not found or was already used., “code”: 400])

не могу исправить эту ошибку. Менял пароль, точно нигде не авторизован