2013-05-19 47 views
0

我有一個Facebook用戶的ID。我如何獲得他們的用戶名?從Facebook帳戶中找到用戶名的最佳方式

具體地說,我使用的是FBFriendPickerController

for (id<FBGraphUser> user in self.friendPickerController.selection) { 
    NSLog(@"The Facebook User: %@", user); 
} 

^這個輸出的東西,如姓名,身份證,姓,名,個人資料照片,但它並沒有給用戶的用戶名。

因此,關於FBFriendPickerController,獲取選定用戶的用戶名的最佳方法是什麼?

+0

您不能(也不應該能夠)從FB API獲取用戶名。您可以填寫用戶的姓名,姓氏,全名,中間名:但不包括用戶名(作爲登錄憑證的一部分)。如果可能的話,這將是FB API的安全風險。也就是說,通常用戶的電子郵件(您可以通過FB API獲得)通常也是登錄用戶名的用戶。 –

+0

@rokjarc我不完全理解爲什麼這會是一個安全風險,請看下面的解決方案,是否有更好的方法來做到這一點? – GangstaGraham

+0

如果您可以通過(作爲登錄憑據的一部分)獲取用戶名,那麼他的Facebook ID會帶來安全風險。所有你需要的是他的密碼,你可以劫持一個帳戶。用戶的名字(不是用戶名)是完全不同的東西。 –

回答

1

設立朋友選擇器控制器時,你可以做類似的措施:

// Initialize the friend picker 
FBFriendPickerViewController *friendPickerController = 
    [[FBFriendPickerViewController alloc] init]; 
... 
// Ask for friend device data 
friendPickerController.fieldsForRequest = 
    [NSSet setWithObjects:@"username", nil]; 

則返回朋友選擇器數據時,用戶名信息也應該被退回。

您可以實現朋友選取器委託方法,以獲取用戶名信息的迂迴方式。實施:friendPickerViewController:shouldIncludeUser:

在這種方法中,你可以檢查返回的數據應該包括用戶名:

- (BOOL)friendPickerViewController:(FBFriendPickerViewController *)friendPicker 
      shouldIncludeUser:(id<FBGraphUserExtraFields>)user 
{ 
    NSString *username = user.username; 
    // Process the username however you wish to. 
    return YES; 
} 

對於類似的要求,在這種情況下,尋找「設備」的信息看到該文檔:https://developers.facebook.com/docs/howtos/filter-devices-friend-selector-using-ios-sdk/

+0

感謝@ CAbernathy這是一個更好的解決方案,LOL一秒鐘我就像,我想我以前見過你,比我意識到我在Facebook文檔中看到你。無論如何,非常感謝你! – GangstaGraham

0

好的。我想出了一條出路。

您可以通過查看JSON找到用戶名通過

graph.facebook.com/(fb_id) 

返回,但有沒有這樣做,直接從friendPickerController更好的辦法,這是個問題。

相關問題