Swift:Facebook 图 API 不接受有效 access_token

Swift: Facebook Graph API not accepting valid access_token

我在 mac 上从命令行 运行 宁一个 swift 脚本。我只是想 post 一个 url 和一个 access_token 我验证过它在其他浏览器中有效。 Facebook 不会接受 post。我在 swift 中使用 URLSession 而 而不是 Facebook SDK。

guard let url = URL(string: "https://graph.facebook.com/aumuaamata?") else { return }
let session = URLSession(configuration: URLSessionConfiguration.default, delegate: nil, delegateQueue: nil)

var request = URLRequest(url: url)
request.httpMethod = "POST"

let postString = "access_token=433263852003213|gLKD8g4ZAlADEDSSKqy8u_KZ_0"
request.httpBody = postString.data(using: .utf8)

request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")

let runLoop = CFRunLoopGetCurrent()
let task = session.dataTask(with: request, completionHandler: { data, response, error in
     if error == nil {
         print("it works!")
     } else {
         print("task error: \(error!)")
     }
     CFRunLoopStop(runLoop)
})
task.resume()
CFRunLoopRun()

Facebook 回复 A page access token is required to request this resourceinsufficient_scope

我尝试将 access_token 添加到 URL,然后像这样对其进行编码:

guard let escapedUrlString = urlRawString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) else { return }

但脚本不会 运行 并表示它不是有效的 URL。在浏览器中输入一切正常。

有什么想法吗?

这是修复。我用 curl 试了一下,遇到了同样的问题。

request.httpMethod = "GET"
request.setValue("Bearer 433263852003213|gLKD8g4ZAlADEDSSKqy8u_KZ_0", forHTTPHeaderField: "Authorization")

这似乎很奇怪,但它确实有效!

不,我发布的示例令牌无效(可能)。