ios - 在 iOS Facebook SDK 中获取并显示用户的个人资料图片

标签 ios swift facebook-graph-api facebook-sdk-4.0

我正在使用 Facebook 的 SDK 来允许用户登录我的应用程序,我希望该应用程序显示用户的个人资料图片。我有以下 Storyboard和 Swift 文件:

  • Main.storyboard 和 ViewController.swift

  • HomeAfterLogIn.storyboard 和 HomeAfterLogInViewController.swift

“Main”包含用户登录的 View Controller ,用户登录的代码如下:

import UIKit
import FacebookLogin

class ViewController: UIViewController
{
    override func viewDidLoad()
    {
        super.viewDidLoad()

        if AccessToken.current != nil
        {
            // Already logged-in
            // Redirect to Home View Controller
            goToHome()
        }

        // Add LoginButton
        let loginButton = FBLoginButton(permissions: [ .publicProfile, .email, .userFriends ])
        let screenSize:CGRect = UIScreen.main.bounds
        let screenHeight = screenSize.height // real screen height
        //let's suppose we want to have 10 points bottom margin
        let newCenterY = screenHeight - loginButton.frame.height - 20
        let newCenter = CGPoint(x: view.center.x, y: newCenterY)
        loginButton.center = newCenter
        view.addSubview(loginButton)

        // Triggered after every successfully login / logout
        NotificationCenter.default.addObserver(forName: .AccessTokenDidChange, object: nil, queue: OperationQueue.main) { [weak self] _ in
            if AccessToken.current != nil {
                // Successfully just Logged in
                // Redirect to Home View Controller
                self?.goToHome()
            } else {
                // Successfully just Logged out
            }
        }
    }

    func goToHome() {
        let storyboard = UIStoryboard(name: "HomeAfterLogIn", bundle: nil)
        let vc = storyboard.instantiateViewController(withIdentifier: "HomeAfterLogInViewController") // I called mine like that (check screenshot below)
        self.navigationController?.pushViewController(vc, animated: true)
    }
}

此代码显示使用 Facebook 登录按钮以及用户是否输入成功登录

func goToHome()

将用户发送到 HomeAfterLogIn.storyboard,这是我希望显示用户个人资料图片的地方。

我在 Facebook Graph API 网站上找到了这段代码:

FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/100046232170264/picture"
           parameters:@{ @"redirect": @"false",}
           HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];

上面的值与我的应用程序相关。当我将此代码插入到 HomeAfterLogInViewController.swift 文件中时,只会产生以下错误:

enter image description here

enter image description here

enter image description here

我输入的代码是否错误?它是 Swift 的早期版本吗?我的是 Swift 4 或 5?这是我第一次使用 Facebook SDK。

对帖子发表评论后

(Keshu R.)将 obj-c 转换为 Swift:

let request = FBSDKGraphRequest(graphPath: "/100046232170264/picture", parameters: [
    "redirect": "false"
], httpMethod: "GET")
request.start(withCompletionHandler: { connection, result, error in
    // Insert your code here
})

(Karol Zmysłowski)代码错误:

enter image description here

(Keshu R.)HomeAfterLogIn.storyboard 中的 UI 项目:

enter image description here

最佳答案

import FacebookCore
import FacebookLogin

Profile.loadCurrentProfile(completion: { profile, error in
    if let profile = profile {
        let imageURL = profile.imageURL(forMode: .square, size: CGSize(width: 200.0, height: 200.0))
    }
})

关于ios - 在 iOS Facebook SDK 中获取并显示用户的个人资料图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59859256/

相关文章:

ios - 替换 UAPush 方法 appReceivedRemoteNotification?

ios - 隐藏 CATiledLayer 图 block 创建

ios - AVAudioPlayer 问题导致应用程序崩溃

Swift:如何从 headerViewer 获取 UItextlabel

ios - 如何从 Swift 中的 TableCell 类访问 UIViewController 类中的值?

iphone - 直接与画外音互动?

ios - 在iPhone App中实现树状 View 结构

php - 将 Facebook 公共(public)帖子从页面获取到 php 数组

Facebook 图形 API : Getting the total number of posts

Facebook 图片 URL 已过期