我接管了一个 Swift项目,需要添加Facebook登录功能.我得到它主要工作,但这里的示例代码有问题( https://developers.facebook.com/docs/swift/graph): 导入FacebookCore struct MyProfileRequest: GraphRequestProtoco
          导入FacebookCore
struct MyProfileRequest: GraphRequestProtocol {
  struct Response: GraphResponseProtocol {
    init(rawResponse: Any?) {
      // Decode JSON from rawResponse into other properties here.
    }
  }
  var graphPath = "/me"
  var parameters: [String : Any]? = ["fields": "id, name"]
  var accessToken = AccessToken.current
  var httpMethod: GraphRequestHTTPMethod = .GET
  var apiVersion: GraphAPIVersion = .defaultVersion
}
let connection = GraphRequestConnection()
connection.add(MyProfileRequest()) { response, result in
  switch result {
  case .success(let response):
    print("Custom Graph Request Succeeded: \(response)")
    print("My facebook id is \(response.dictionaryValue?["id"])")
    print("My name is \(response.dictionaryValue?["name"])")
  case .failed(let error):
    print("Custom Graph Request Failed: \(error)")
  }
}
connection.start() 
 我在使用dictionaryValue可选说法/Users/jt/a-dev/tabfb/tabfb/LoginViewController.swift:72:31编译行时遇到错误:’MyProfileRequest.Response’类型的值没有成员’ dictionaryValue’.我如何使用它来访问用户名或ID?
我今天也遇到了这个问题.我在MyProfileRequest中获得了用户ID和名称struct Response: GraphResponseProtocol {
    init(rawResponse: Any?) {
        // Decode JSON from rawResponse into other properties here.
        guard let response = rawResponse as? Dictionary<String, Any> else {
            return
        }
        if let name = response["name"],
            let id = response["id"] {
            print(name)
            print(id)
        }
    }
} 
 编辑:我重新设计了这样的代码,以使用.success(let response)中的值
struct Response: GraphResponseProtocol {
    var name: String?
    var id: String?
    var gender: String?
    var email: String?
    var profilePictureUrl: String?
    init(rawResponse: Any?) {
        // Decode JSON from rawResponse into other properties here.
        guard let response = rawResponse as? Dictionary<String, Any> else {
            return
        }
        if let name = response["name"] as? String {
            self.name = name
        }
        if let id = response["id"] as? String {
            self.id = id
        }
        if let gender = response["gender"] as? String {
            self.gender = gender
        }
        if let email = response["email"] as? String {
            self.email = email
        }
        if let picture = response["picture"] as? Dictionary<String, Any> {
            if let data = picture["data"] as? Dictionary<String, Any> {
                if let url = data["url"] as? String {
                    self.profilePictureUrl = url
                }
            }
        }
    }
} 
 在成功案例中,您可以获得如下值:
let connection = GraphRequestConnection()
connection.add(MyProfileRequest()) { response, result in
  switch result {
  case .success(let response):
    print("My facebook id is \(response.id!)") //Make sure to safely unwrap these :)
    print("My name is \(response.name!)")
  case .failed(let error):
    print("Custom Graph Request Failed: \(error)")
 }
}
connection.start()
        
             