如果用户在登录后更改了他的 Facebook 个人资料详细信息,如何在我的应用程序中更新 Facebook 个人资料?
Posted
技术标签:
【中文标题】如果用户在登录后更改了他的 Facebook 个人资料详细信息,如何在我的应用程序中更新 Facebook 个人资料?【英文标题】:How to update the facebook profile in my application if the user changes his facebook profile details after logging in? 【发布时间】:2017-06-02 05:09:25 【问题描述】:我有一个要求用户通过 Facebook 登录的应用程序。在获得用户名、电子邮件 ID、个人资料图片等公共详细信息后,相同的内容会显示在“我的个人资料”页面的应用程序中。
一切正常。但是一个场景
假设用户通过 Facebook 网站或通过 Facebook 应用程序在登录后更改其 Facebook 用户名 客户端应用程序中的 Facebook。
新用户名将如何反映在他的“我的个人资料”页面中 将显示相同的旧用户名? Facebook SDK 是否提供 去的时候自动接收公开信息的方法 “我的个人资料”页面?
【问题讨论】:
我认为你必须创建一个函数并在 ViewDidAppear() 中调用该函数。该函数将从 facebook graph API 获取用户信息。 @AnuragSharma 是的,这很清楚。但是请告诉我们必须在 ViewDidAppear 中调用哪个方法?请发表一个答案,我一定会支持它。 【参考方案1】:由于您已经完成了登录部分,现在在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
)
【讨论】:
以上是关于如果用户在登录后更改了他的 Facebook 个人资料详细信息,如何在我的应用程序中更新 Facebook 个人资料?的主要内容,如果未能解决你的问题,请参考以下文章