如果用户在登录后更改了他的 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 个人资料?的主要内容,如果未能解决你的问题,请参考以下文章

拒绝权限后登录 Facebook

适用于 iOS 的 Facebook SDK 登录

Facebook 开发者登录错误

用户登录后 Facebook 不会重定向到回调 URL

Facebook 登录 - 获取用户数据

Laravel 5 - 从他的所有设备中注销用户