【问题标题】:Instagram api. Request the access_token in Swift 3.0Instagram API。在 Swift 3.0 中请求 access_token
【发布时间】:2016-07-19 10:08:12
【问题描述】:

您好,所以在我问问题之前,我想向您道歉,因为我是应用程序开发的新手,如果有任何问题真的很愚蠢,非常抱歉。

所以我正在使用 Instagram API 制作一个应用程序,这是我第一次在 Xcode 中实现它,老实说我不太确定它是如何工作的,但我设法通过获取代码Instagram 使用 Web 视图提供给 Swift,但现在我需要能够运行终端命令:

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 的代码是什么?

谢谢!

【问题讨论】:

  • 为什么是“终端命令”?在 iOS 上?这是一个网络电话。您是否了解如何在 iOS 上进行 Web 服务调用?
  • 我会很感激你的问题(+1 upvote)。

标签: ios swift xcode terminal instagram


【解决方案1】:

您需要发送简单的 http 请求。试试这个代码:

斯威夫特 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()

斯威夫特 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()

【讨论】:

    【解决方案2】:

    终端是台式机/笔记本电脑上的应用程序。

    cURL 是台式机/笔记本电脑上的工具/库。



    iPhone 可以安装和使用这些吗?

    没有。



    我们可以编写实现与 cURL 相同的功能的 swift 代码吗?

    是的。 cURL 命令正在触发对 instagram 提供的 Web 服务的请求。

    您将需要进行大量的谷歌搜索和研究,以了解有关 Web 请求和一般 Web 服务的更多信息。然后看看你是如何快速做到这一点的,比如使用NSURLSession,或者使用SDK。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-21
      • 1970-01-01
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 2017-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多