Search code examples
iosswiftipadinstagram-api

Instagram login with swift 5, getting ["error_type": OAuthException, "error_message": Invalid platform app, "code": 400]


I'm trying to login with instagram with new documentation and getting error like Invalid platform app, "code": 400

I am successfully getting code using https://api.instagram.com/oauth/authorize and after getting code i am calling https://api.instagram.com/oauth/access_token for getting access_token but it gave me error.

I am following this documentation : https://developers.facebook.com/docs/instagram-basic-display-api/getting-started

Please help me to solve this.

Thanks in advance.


Solution

  • Use Instagram App ID, Instagram App Secret and remove #_ from received code. Then Make your post request below format.

    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()