Вход в Instagram с помощью swift 5, получение ["error_type": OAuthException, "error_message": недопустимое приложение платформы, "code": 400] - PullRequest
2 голосов
/ 12 февраля 2020

Я пытаюсь войти в систему с Instagram с новой документацией и получаю сообщение об ошибке типа Недопустимое приложение платформы, "код": 400

Я успешно получаю код используя https://api.instagram.com/oauth/authorize и после получения кода я звоню https://api.instagram.com/oauth/access_token для получения access_token, но это дало мне ошибку.

Я следую этой документации: https://developers.facebook.com/docs/instagram-basic-display-api/getting-started

Пожалуйста, помогите мне решить эту проблему.

Заранее спасибо.

1 Ответ

2 голосов
/ 13 февраля 2020

Используйте идентификатор приложения Instagram, секрет приложения Instagram и удалите #_ из полученного кода. Затем сделайте запрос на пост в формате.

let urlString = "https://api.instagram.com/oauth/access_token"

let appendedURI = "client_id=\(API.INSTAGRAM_CLIENT_ID)&client_secret=\(API.INSTAGRAM_CLIENTSERCRET)&grant_type=authorization_code&redirect_uri=\(API.INSTAGRAM_REDIRECT_URI)&code=\(code)"

    let url = URL(string: urlString)!

    let session = URLSession.shared
    var request = URLRequest(url: url)
    request.httpMethod = "Post"
    request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField:"Content-Type");
    request.cachePolicy = URLRequest.CachePolicy.reloadIgnoringCacheData
    request.httpBody = appendedURI.data(using: .utf8)

    let task = session.dataTask(with: request) { (data, response, error) in
        if error == nil {
        let dataString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
        print("result=",dataString!)


let task = session.dataTask(with: request) { (data, response, error) in
            if error == nil {
            let dataString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
            print("result=",dataString!)
                do {

                if let accDetail = try JSONSerialization.jsonObject(with: data!, options: []) as? [String : Any] {

                    let accessToken = accDetail["access_token"] as! String

                    let userID = accDetail["user_id"] as! Int64

                    completion("success", accessToken, userID)

                }

            }catch let error {



            }
        }

    }
    task.resume()
...