gpt4 book ai didi

ios - 在 Swift 3 中显示 Facebook 事件

转载 作者:行者123 更新时间:2023-11-28 15:35:37 25 4
gpt4 key购买 nike

如何使用 Swift 3 将 Facebook 事件存储在数组中?我有以下代码,我几乎是从 The Swift Guy 复制的,但它不适用于此代码。以下是我的 viewDidLoad() 函数:

let url = URL(string: "https://www.facebook.com/events/upcoming")
let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
if error != nil {
print("ERROR")
} else {
if let content = data {
do {
let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
print(myJson)
} catch {
print("error")
}
}
}
}
task.resume()

如何从 Facebook 事件页面获取信息?我应该提一下,我擅长编码,但我是 Swift 的初学者,所以对每一行的作用进行一些解释会非常有帮助。谢谢!

最佳答案

您请求的 URL 返回一个 HTML 页面,您正尝试将其作为 JSON 资源进行解析。您必须使用 Facebook Graph API 和/或 Facebook Swift SDK 来获取 JSON 格式的信息。

尝试阅读 Facebook 开发人员文档以获取更多信息:

https://developers.facebook.com/docs/swift

https://developers.facebook.com/docs/graph-api

此外,Swift Error 对象包含的信息可以帮助您了解哪里出了问题。您可以将它们打印到控制台。试试这个:

if error != nil {
print(error)
} else {
// ...

catch 语句还在其 block 内设置了自己的 error 变量,因此您可以使用:

} catch {
print(error)
}

确保您了解创建 Facebook 应用程序所涉及的步骤:向 Facebook 注册应用程序、下载 SDK、将 SDK 添加到您的项目、为您的应用程序配置 SDK、在您的应用程序中登录 Facebook,然后调用Facebook Graph API 来获取信息。这些步骤都在上面提到的 Facebook 文档中进行了描述。我将从 iOS SDK (Objective-C) 说明开始设置您的项目,然后将您的应用委托(delegate)和 View Controller 更改为以下内容:

AppDelegate.swift:

import UIKit
import FacebookCore

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {
SDKApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
return true
}

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return SDKApplicationDelegate.shared.application(app, open: url, options: options)
}

}

ViewController.swift:

import UIKit
import FacebookCore
import FacebookLogin

class ViewController: UIViewController, LoginButtonDelegate {

override func viewDidLoad() {
super.viewDidLoad()
if let _ = AccessToken.current {
loadEvents()
}
let loginButton = LoginButton(readPermissions: [ .publicProfile, .userEvents ])
loginButton.center = view.center
loginButton.delegate = self

view.addSubview(loginButton)
}

func loginButtonDidCompleteLogin(_ loginButton: LoginButton, result: LoginResult) {
if let _ = AccessToken.current {
loadEvents()
}
}

func loginButtonDidLogOut(_ loginButton: LoginButton) {
// Logout handling code here
}

func loadEvents() {
let connection = GraphRequestConnection()
connection.add(GraphRequest(graphPath: "/me/events")) { httpResponse, result in
switch result {
case .success(let response):
print("Graph Request Succeeded: \(response)")
case .failed(let error):
print("Graph Request Failed: \(error)")
}
}
connection.start()
}

}

response 对象将包含已解析的 Facebook 事件信息。

关于ios - 在 Swift 3 中显示 Facebook 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44325728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com