2016-07-19 5 views
1

Привет, прежде чем я задаю свой вопрос, я хотел бы извиниться, потому что я новичок в разработке приложений, поэтому извините, если любые вопросы действительно глупы.Instagram api. Запросите access_token в Swift 3.0

Итак, я делаю приложение с помощью API Instagram, и это мой первый раз, когда я внедряю его в Xcode, и, честно говоря, я не совсем уверен, как это работает, но мне удалось преодолеть свой путь, что Instagram предоставляет в Swift с помощью Web View, но теперь мне нужно, чтобы иметь возможность запускать терминал команду:

curl -F 'client_id=CLIENT_ID' \ 
-F 'client_secret=CLIENT_SECRET' \ 
-F 'grant_type=authorization_code' \ 
-F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \ 
-F 'code=CODE' \ 
https://api.instagram.com/oauth/access_token 

, но это возможно, что, чтобы иметь возможность обрабатывать на iPhone?

Что я пытаюсь спросить, можете ли вы использовать команды терминала в приложениях для iPhone, и если да, то как я могу это сделать? Что такое Swift или Objective-C для этого?

Спасибо!

+1

Почему "Терминал команда"? На iOS? Это веб-звонок. Вы посмотрели, как делать вызовы веб-сервисов в iOS? – Larme

+0

Я хотел бы поблагодарить вас за ваш вопрос (+1 upvote). –

ответ

0

Терминал - приложение на рабочем столе/ноутбуке.

cURL - это инструмент/библиотека на рабочем столе/ноутбуке.



Можно ли установить и использовать iPhone?

No.



Можем ли мы написать быстрый код, который достигает то же самое Curl делает?

Да. Команда cURL запускает запрос на веб-службу, предоставляемую instagram.

Вам нужно будет сделать довольно много исследований и исследований, чтобы узнать больше о веб-запросах и веб-сервисах в целом. Затем, глядя на то, как вы делаете это быстро, например, используя NSURLSession или используя SDK.

2

Вам необходимо отправить простой запрос HTTP. Попробуйте этот код:

Swift 3

let redirectURI = "https://www.instagram.com/" 
    let clientID = "{YOUR_CLIENT_ID}" 
    let clientSecret = "{YOUR_CLIENT_SECRET}" 
    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=basic+public_content" 

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

Swift 2

let redirectURI = "https://www.instagram.com/" 
    let clientID = "{YOUR_CLIENT_ID}" 
    let clientSecret = "{YOUR_CLIENT_SECRET}" 
    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=basic+public_content" 

    let request = NSMutableURLRequest(URL: url) 
    request.HTTPMethod = "POST" 
    request.HTTPBody = paramString.dataUsingEncoding(NSUTF8StringEncoding)! 

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) in 
     do { 
      if let jsonData = data { 
       if let jsonDataDict = try NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.AllowFragments) as? [String: AnyObject] { 
        NSLog("Received data:\n\(jsonDataDict))") 
       } 
      } 
      } catch let err as NSError { 
      print(err.debugDescription) 
     } 
    } 

    task.resume() 
Смежные вопросы