如果用户在登录后更改他的Facebook个人资料详细信息,如何更新我的应用程序中的Facebook个人资料?

问题描述:

我有一个应用程序需要用户通过Facebook登录。在获得诸如用户名,电子邮件ID,个人资料照片等公共详细信息之后,“我的个人资料”页面中的应用程序中会显示相同的内容如果用户在登录后更改他的Facebook个人资料详细信息,如何更新我的应用程序中的Facebook个人资料?

一切工作正常。但情况

  • 假设用户通过 Facebook在客户端应用程序登录后修改通过Facebook网站或通过Facebook应用程序在他的Facebook用户名。

  • 新用户名将如何反映在他的“我的个人资料”页面中,因为它 将显示相同的旧用户名? Facebook SDK是否提供 当我们转到 “我的档案”页面时自动接收公开详情的方法?

+0

我认为你必须创建一个函数并调用在ViewDidAppear函数() 。该功能将从facebook图形API获取用户信息。 –

+0

@AuuragSharma是的,它很清楚。但请告诉我们必须在ViewDidAppear中调用哪种方法?请发表一个答案,我一定会支持它。 –

正如你已经与登录部分完成,现在请在ViewDidAppear()这个函数来获取用户信息:

func GetUserInfo(completionHandler handler: @escaping(_ response: [String: Any]) -> Void) { 

if((FBSDKAccessToken.current()) != nil) { //If you have a valid Access token 

    FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).start(completionHandler: { (connection, result, error) -> Void in 
     if (error == nil) { 

      //everything works fine print the user data 
      print(result ?? AnyObject.self) 

      //Here you can get any type of information of user 
      if let jsondata = result as? [String: Any], let strEmail = jsondata["email"] as? String, let fb_id = jsondata["id"] as? String, let picture = jsondata["picture"] as? [String: Any], let data = picture["data"] as? [String: Any],let url = data["url"] as? String { 

       print(url) 
       print(strEmail) 
       print(fb_id) 


       handler(jsondata) //Pass the data in the completion Handler 
      } 


     } else { 
      //failure popup 
     } 
    }) 
} 

}