2017-06-02 208 views
1

我有一個應用程序需要用戶通過Facebook登錄。在獲得諸如用戶名,電子郵件ID,個人資料照片等公共詳細信息之後,「我的個人資料」頁面中的應用程序中會顯示相同的內容如果用戶在登錄後更改他的Facebook個人資料詳細信息,如何更新我的應用程序中的Facebook個人資料?

一切工作正常。但情況

  • 假設用戶通過 Facebook在客戶端應用程序登錄後修改通過Facebook網站或通過Facebook應用程序在他的Facebook用戶名。

  • 新用戶名將如何反映在他的「我的個人資料」頁面中,因爲它 將顯示相同的舊用戶名? Facebook SDK是否提供 當我們轉到 「我的檔案」頁面時自動接收公開詳情的方法?

+0

我認爲你必須創建一個函數並調用在ViewDidAppear函數() 。該功能將從facebook圖形API獲取用戶信息。 –

+0

@AuuragSharma是的,它很清楚。但請告訴我們必須在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 
     } 
    }) 
} 

} 
相關問題