[英]How to retrieve username for facebook from sharekit in iphone sdk
我正在使用sharekit為Facebook和Twitter集成創建一個應用程序。 很好 但是現在我想檢索用於Facebook登錄的用戶名和密碼。 我點擊了此鏈接 。
但我無法檢索這些。
我不明白如何使用該方法以及在哪里可以檢索用戶名和密碼
如果您知道的話,能否請您指導我。
首先,您無法檢索用戶的Facebook 密碼 。 希望這樣做的原因很明顯。
但是,一旦使用ShareKit將應用程序連接到用戶的Facebook帳戶, 就可以檢索授予應用程序的訪問令牌 。
在撰寫本文時,我不相信ShareKit可以直接訪問訪問令牌,但是有一個容易破解的工具可以檢索它。
第1步 :確保您的應用有權連接到Facebook
BOOL isConnected = [SHKFacebook isServiceAuthorized];
如果在此處獲得isConnected == NO
,則您的UI應指示用戶需要連接到Facebook才能使用您的共享功能。
步驟2 :獲取訪問令牌以便訪問用戶的Facebook數據
假設您在步驟1中獲得isConnected == YES
// Hack into ShareKit's user defaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *accessToken = [defaults valueForKey:@"kSHKFacebookAccessToken"];
步驟3 :繞過ShareKit並向Facebook SDK進行自定義查詢
假設您的班級有這樣的財產...
// Change "strong" to "retain" if not using ARC
@property (nonatomic, strong) SHKFacebook *shkFb;
...您可以使用類似這樣的內容啟動Facebook查詢...
if ( !fb ) {
// This is how SHKFacebook instantiates a Facebook object. YMMV.
self.fb = [[Facebook alloc] initWithAppId:SHKCONFIG(facebookAppId)];
}
NSMutableDictionary *fbParams = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"name", @"fields",
accessToken, @"access_token",
nil];
[fb requestWithGraphPath:@"me" andParams:fbParams andDelegate:self];
步驟4 :實現Facebook委托方法
Facebook查詢完成后,它將通知您的對象,這時您可以執行一些奇特的事情,例如顯示用戶名以明確誰的牆將從您的應用程序發送帖子。
當然,您需要在.h中聲明FBRequestDelegate
協議:
#import "Facebook.h"
@interface YourClass : NSObject <FBRequestDelegate>
並且您將需要(至少)通過FBRequestDelegate實現成功和失敗的方法:
#pragma mark - FBRequestDelegate
- (void)request:(FBRequest *)request didLoad:(id)result {
// Additional keys available in "result" can be found here:
// https://developers.facebook.com/docs/reference/api/user/
NSString *username = [result objectForKey:@"name"];
// Localize if you're at all interested in the global app market!
NSString *localizedString = NSLocalizedString(@"connected as %@",
@"Connection status label");
// The label will read "connected as <username>"
self.statusLabel.text = [NSString stringWithFormat:localizedString, username];
}
- (void)request:(FBRequest *)request didFailWithError:(NSError *)error {
// Handle failure
// (In our app, we call [SHKFacebook logout]
// and display an error message to the user with
// an option to retry connecting to Facebook.)
}
我相信clozach的答案是針對較舊版本的ShareKit。 在最近(截至2012年1月30日)中,獲取的Facebook Access Token的方法失敗,而accessToken始終為nil。
// Hack into ShareKit's user defaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *accessToken = [defaults valueForKey:@"kSHKFacebookAccessToken"];
相反,使用
NSString *accessToken = [[FBSession activeSession] accessToken];
為我工作。
ShareKit
FBConnect
內部使用FBConnect
進行身份驗證。 因此,無法使用與Twitter
相同的方法來檢索值。 身份驗證時,FBConnect使用UIWebView
視圖連接到服務器。 驗證后,該應用將存儲一個令牌,該令牌可重復使用以發布文本,直到用戶在Facebook
丟棄該令牌。
因此,答案是否定的。 您無法獲取該數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.