公开个人资料的 Facebook iOS SDK 图像 URL 状态为 404

Facebook iOS SDK image URL of public profile have status 404

提问人:Ice 提问时间:10/31/2023 更新时间:10/31/2023 访问量:46

问:

我在从 publis_profile 获取用户个人资料图像时遇到了问题,在初始化 Facebook 应用程序后,一个月一切都按预期工作,移动 SDK 获取图像没有问题,但有些事情发生了变化,我认为更改是在 Facebook 的后端(从我这边更新没有出现),因为配置文件图像的 URL 返回状态代码 404。我创建了一个新的 Facebook 应用程序,如果我使用另一种方式发送Postman请求,例如 GET -> https://graph.facebook.com/ID/picture?height=500&width=500&breaking_change=profile_picture 进行测试,问题就是一样的(也使用带有访问令牌的变体来表示此请求行为是相同的),请求的状态代码为 200,但图像是占位符,移动 SDK 也返回带有 200 状态代码的请求,并且里面的对象具有 URL 的图像,但此 URL 返回状态代码 404,这是此 URL https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=3151471181826271&height=200&width=200&ext=1701276382&hash=AeT5F3GKPwRx5E-c-qU 的一个示例

你能帮我找出问题所在吗?

此外,我使用了这些问题中的信息

Facebook iOS SDK 和 swift:如何获取用户的头像

获取 Facebook 真实个人资料图片 URL

获取 Facebook 公开资料 URL

移动端用于获取图像的代码

facebookManager.logOut()
facebookManager.logIn(permissions: ["public_profile"], from: UIApplication.shared.rootController()) { result, error in
    if let error = error {
        return
    }
    let request = GraphRequest(graphPath: "me", parameters: ["fields" : "name, id, picture.type(large)"])
    
    if let result = result {
        if !result.isCancelled {
            request.start { _, res, _ in
                guard let data = res as? [String: Any] else {
                    return
                }
                let facebookURL = parceFacebookResponceToImageURL(data: data)
            }
        }
    }
}

fileprivate func parceFacebookResponceToImageURL(data: [String : Any]) -> String? {
    var imageUrl: String?
    if let profilePicObj = data["picture"] as? [String:Any] {
        if let profilePicData = profilePicObj["data"] as? [String:Any] {
            if let profilePic = profilePicData["url"] as? String {
                print("\(profilePic)")
                imageUrl = profilePic
            }
        }
    }
    return imageUrl
}
iOS facebook-graph-api 脸书-ios-sdk

评论


答: 暂无答案