簡體   English   中英

如何從iPhone SDK中的Sharekit檢索Facebook的用戶名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM