Yahoo аутентифицирует и получает данные профиля iOS
Я перечислил здесьШаги интеграции с Yahoo за которым я следовал.
Шаг 1. Я пошел вhttp://developer.yahoo.com/social/sdk/objectivec/Шаг 2. Скачал всю структуру отсюда -http://github.com/yahoo/yos-social-objcШаг 3. Я сделал Drag & drop в моем проекте.Шаг 4. Флаг включенияfno-objc-arc
для рамочных файлов Yahoo.Шаг 5. Я сделал#import "YOSSocial.h"
в заголовочном файле моего viewController.Шаг 6. Ввиду загруженности я поместилБлок кода 1 создать объект сеанса.Шаг 7. Нажатием кнопки я вызываюБлок кода 2.Шаг 8. В AppDelegate.m я реализовал метод какБлок кода 3.Шаг 9. Я получаюoauth_token
& oauth_verifier
в перенаправлении.Блок кода 1
- (void)viewDidLoad {
[super viewDidLoad];
self.session = [YOSSession sessionWithConsumerKey:@"ConsumerKeyHere"
andConsumerSecret:@"ConsumerSecretKeyHere"
andApplicationId:@"AppKey"];
BOOL hasSession = [self.session resumeSession];
if(hasSession == FALSE) {
// custom call back URL which will redirect to our-app.
// 10.0.0.76/iOS/callback.php redirects
// to com.mymobileapps.currentApp.yahoo
[self.session
sendUserToAuthorizationWithCallbackUrl:
@"http://10.0.0.76/iOS/callback.php"];
} else {
[self sendRequests];
}
}
Блок кода 2
- (void)sendRequests {
// initialize a user request for the logged-in user
YOSUserRequest *request = [YOSUserRequest requestWithSession:self.session];
// fetch the user's profile data
[request fetchProfileWithDelegate:self];
}
- (void)requestDidFinishLoading:(YOSResponseData *)data {
// parse the response text string into a dictionary
NSDictionary *rspData = [NSJSONSerialization JSONObjectWithData:[data.responseText dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:nil];
NSDictionary *profileData = [rspData objectForKey:@"profile"];
// format a string using the nickname object from the profile.
NSString *welcomeText = [NSString stringWithFormat:@"Hey %@ %@!",
[profileData objectForKey:@"givenName"],
[profileData objectForKey:@"familyName"]];
NSLog(@"welcometext is %@",welcomeText);
self.lblProfile.text = welcomeText;
}
Блок кода 3
- (BOOL)application: (UIApplication *)application
openURL: (NSURL *)url
sourceApplication: (NSString *)sourceApplication
annotation: (id)annotation {
NSString *str = [[url description] stringByReplacingOccurrencesOfString:@"com.mymobileapps.currentApp.yahoo://oauth-response?oauth_token=" withString:@""];
NSArray *ar = [str componentsSeparatedByString:@"&oauth_verifier="];
NSLog(@"oauth_token is %@",[ar objectAtIndex:0]);
NSLog(@"oauth_verifier is %@",[ar objectAtIndex:1]);
// How my session will get updated now with valid authentication done?
return YES;
}
Я следовал за каждым шагом, как описано здесь -http://developer.yahoo.com/social/sdk/objectivec/ & Я также реализовал перенаправление, как описано здесь -Как перенаправить из Yahoo в мое приложение IOS после аутентификации?
ВОПРОС составляет. Я все еще не могу получить данные профиля пользователя, такие как пол, дата рождения и т. Д. То есть - отБлок кода 2Я получаю данные как ноль.
Чего не хватает в моем коде для получения данных профиля пользователя?
Другая ссылка.
- (BOOL)application: (UIApplication *)application
openURL: (NSURL *)url
sourceApplication: (NSString *)sourceApplication
annotation: (id)annotation {
return [GPPURLHandler handleURL:url
sourceApplication:sourceApplication
annotation:annotation];
}
Приведенный выше код иллюстрирует, как Google+ Framework обрабатывает перенаправление и управляет локальным сеансом. В случае с Yahoo, я не нахожу никаких подробностей, которые бы помогли обновить local-session мобильного приложения.
Редактировать:
Если это невозможно через Yahoo OAuth,Как можно получить основные данные профиля (например, пол, дату рождения, идентификатор электронной почты, имя и т. Д.) Из Yahoo?