Прежде всего, вы не можете восстановить пользовательский 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.)
}