Как получить имя пользователя для Facebook из sharekit в iphone SDK - PullRequest
0 голосов
/ 19 мая 2011

Я создаю приложение для интеграции с Facebook и Twitter, используя sharekit. Это отлично работает. Но теперь я хочу получить имя пользователя и пароль для входа в Facebook. Я перешел по этой ссылке .

Но я не могу получить эти ..

Я не могу понять, как можно использовать этот метод и где я могу использовать для получения имени пользователя и пароля

Можете ли вы вести меня, если знаете.

Ответы [ 3 ]

3 голосов
/ 29 декабря 2011

Прежде всего, вы не можете восстановить пользовательский Facebook пароль . Надеюсь, причины этого очевидны.

Вы можете , однако получите токен доступа , который предоставляется вашему приложению после подключения приложения к учетной записи пользователя Facebook с помощью ShareKit.

На момент написания этой статьи я не думаю, что ShareKit делает токен доступа доступным напрямую, но его легко получить.

Шаг 1 : убедитесь, что ваше приложение авторизовано для подключения к Facebook

BOOL isConnected = [SHKFacebook isServiceAuthorized];

Если вы получаете isConnected == NO здесь, ваш пользовательский интерфейс должен указывать, что пользователю необходимо подключиться к Facebook, чтобы использовать ваши функции обмена.

Шаг 2 : получение токена доступа для доступа к данным Facebook пользователя

Если вы получили isConnected == YES на шаге 1

// 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 будет выполнен, он уведомит ваш объект, и в этот момент вы сможете делать причудливые вещи, например отображать имя пользователя, чтобы было ясно, чья стена будет получать сообщения, отправленные из вашего приложения.

Вам потребуется объявить протокол FBRequestDelegate в вашем .h, конечно:

#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.)
}
2 голосов
/ 30 января 2013

Я думаю, что ответ Clozach для более старой версии ShareKit.В самом последнем (по состоянию на 30 января 2012 г.) методе получения предоставленного токена доступа Facebook не удается получить доступ, при котором accessToken всегда равен nil.

// Hack into ShareKit's user defaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *accessToken = [defaults valueForKey:@"kSHKFacebookAccessToken"];

Вместо этого использование

NSString *accessToken = [[FBSession activeSession] accessToken];

работает дляя.

1 голос
/ 19 мая 2011

ShareKit использует FBConnect внутри для аутентификации.Таким образом, значения не могут быть получены с использованием того же метода, что и для Twitter.FBConnect использует представление UIWebView для подключения к серверу во время аутентификации.После аутентификации приложение будет хранить токен, который можно использовать повторно для публикации текста, пока пользователь не сбросит токен на Facebook.

Итак, ответ - нет.Вы не можете получить эти данные.

...