
рд╢рд╛рдо рд╣реЛ рдЧрдИ рдереАред рд╡рд╛рд░реНрдо рдЕрдЧрд╕реНрдд рд╢рдирд┐рд╡рд╛рд░
рдХреЛ рдмреМрджреНрдзрд┐рдХ рдЦреЗрд▓реЛрдВ рдХреЗ
рдХреНрд▓рдм рдХреЗ iOS рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП Google рдФрд░ Facebook рдкрд░ oAuth рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдПрдХ рд╕рддрд╣реА рдЦреЛрдЬ рдиреЗ рд╣рдореЗрдВ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ рджреЛрдиреЛрдВ рдХрдВрдкрдирд┐рдпрд╛рдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЗрд╕ рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВ рдФрд░ рдЧреЗрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реАрдзреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд▓реМрдЯрд╛рддреА рд╣реИрдВред
рд╕реНрд╡рдпрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рддреНрд╡рд░рд┐рдд рд▓рд┐рдВрдХ:
Google -
gtm-oauth2 ,
Facebook -
facebook-ios-sdkрдХрдЯреМрддреА рдХреЗ рддрд╣рдд рдПрдХреАрдХрд░рдг рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред
рдЧреВрдЧрд▓
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ,
рдПрдкреАрдЖрдИ рдХрдВрд╕реЛрд▓ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реАрдХреНрд░реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреНрд╡рд░рд┐рдд рдФрд░ рдореБрдлреНрдд рд╣реИред
рд╣рдо gtm-oauth2 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред Google рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдмрдЯрди рдкрд░ рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ:
#import "GTMOAuth2ViewControllerTouch.h" ... - (void)onGoogleAuth:(id)sender { GTMOAuth2ViewControllerTouch *viewController; viewController = [[[GTMOAuth2ViewControllerTouch alloc] initWithScope:@"https://www.googleapis.com/auth/userinfo#email" clientID:@OAUTH_GOOGLE_CLIENT_ID clientSecret:@OAUTH_GOOGLE_CLIENT_SECRET keychainItemName:@"OAuth2 MYAPP: Google" delegate:self finishedSelector:@selector(viewController:finishedWithAuth:error:)] autorelease ]; [[self navigationController] pushViewController:viewController animated:YES]; }
рдпрд╣ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде ViewController рдФрд░ Google рд╕реЗ рдПрдХ рдорд╛рдирдХ рд╡реЗрдм рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕрдиреБрд░реЛрдз рдЦреЛрд▓рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдИрдореЗрд▓ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЙрдЧ-рдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА рдЧрдИ рдИрдореЗрд▓ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рдлрд▓ рд▓реЙрдЧрд┐рди рдХреЗ рддрдереНрдп рдХрд╛ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддреЗ рд╣реИрдВ:
- (void)viewController:(GTMOAuth2ViewControllerTouch *)viewController finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError *)error { if (error != nil) { // Authentication failed } else { if (auth.canAuthorize){ // auth.userEmail } } }
рдпрд╣ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛, рд▓реЗрдХрд┐рди Google API рдЗрд╕ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рджрд╛рдпрд░реЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рдХрдИ Google рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд┐рд╕рдореЗрдВ youtube рдФрд░ buzz рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдлреЗрд╕рдмреБрдХ
рдлреЗрд╕рдмреБрдХ рдереЛрдбрд╝рд╛ рдФрд░ рдЬрдЯрд┐рд▓ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЖрдкрдХреЛ рдЕрдкрдиреЗ "рдЖрд╡реЗрджрди" рдХреЛ
рдпрд╣рд╛рдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
рд╣реИ , рдЬрдм рддрдХ рдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ facebook-ios-sdk рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рд╡рд░реНрдЧ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ FBSessionDelegate рдФрд░ FBRequestDelegate рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛрдбрд╝реЗрдВред
#import "FBConnect.h" @interface AppDelegate : NSObject <UIApplicationDelegate, FBSessionDelegate, FBRequestDelegate> { UIWindow *window; .... Facebook* facebook; } .... - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url; - (void)fbDidLogin; - (void)request:(FBRequest *)request didLoad:(id)result; </pre></code> : <code><pre> - (void)facebookLogin { if (!facebook) facebook = [[Facebook alloc] initWithAppId:@FACEBOOK_APP_ID]; [facebook authorize:nil delegate:self]; } - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [facebook handleOpenURL:url]; } - (void)fbDidLogin { [facebook requestWithGraphPath:@"me" andDelegate:self]; } - (void)request:(FBRequest *)request didLoad:(id)result {
рдиреЗрддреНрд░рд╣реАрди, рдпрд╣ рдЖрд╡реЗрджрди рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛ рд░рд╛рд╕реНрддрд╛, рдПрдХ рдЕрд▓рдЧ рд╕рдлрд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЦреЛрд▓рдиреЗ, рдлреЗрд╕рдмреБрдХ рд╕реЗ рдПрдХ рд╡реЗрдм рд▓реЙрдЧрд┐рди рдФрд░ рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдлрд╝реЙрд░реНрдо, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд▓реЙрдЧ-рдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рджрд░рдЕрд╕рд▓, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХреИрд╕реЗ рд▓реМрдЯрддрд╛ рд╣реИ? рдХрд╛рд╕реНрдХреЗрдЯ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд░реВрдк рд╕реЗ рдЦреБрд▓рддрд╛ рд╣реИред рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ info.plist рдореЗрдВ, рд╣рдо рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ URL рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж Safari "рдкрддрд╛ рдореЗрдВ" рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ Xcode рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ (YouAPPID рдХреЗ рдмрдЬрд╛рдп рд╣рдо рдлреЗрд╕рдмреБрдХ рдкрд░ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рдЖрдИрдбреА рд▓рд┐рдЦрддреЗ рд╣реИрдВ):

рд╡реЛрдЗрд▓рд╛, рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдлреЗрд╕рдмреБрдХ рдЗрдирдкреБрдЯ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдП рдЧрдП рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмрд┐рдВрджреБ рдЯреЛрдкреА рдореЗрдВ рд╣реИред
рдлреЗрд╕рдмреБрдХ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛, рдХреАрдЪрд┐рдиреНрд╕ рдореЗрдВ рд╕рддреНрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛, рдФрд░ рдЕрдиреНрдп рдЙрдкрд╣рд╛рд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рд╣реИрдВред рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ (рд╕рд░рд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг) рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдкрд░реНрдпрд╛рдкреНрдд рдерд╛, рд▓реЗрдХрд┐рди рдПрдкреАрдЖрдИ рдХреА рдХреНрд╖рдорддрд╛рдПрдВ рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд╣реИрдВред "рджреАрд╡рд╛рд░ рдкрд░ рдПрдХ рдлреЛрдЯреЛ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ" рдФрд░ "рдПрдХ рдкрд┐рди рдореЗрдВ xmpp рджреНрд╡рд╛рд░рд╛ рдПрдХ рджреЛрд╕реНрдд рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВ"ред
13 рдХреЛ рд╢реБрдХреНрд░рд╡рд╛рд░
рдирд╣реАрдВ, рд╣рдо рд╣реЙрдХреА рдорд╛рд╕реНрдХ рдореЗрдВ рдФрд░ рд╡рд┐рд╢рд╛рд▓ рдХреНрд▓реАрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд╛рдЧрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдорд░рд╣рдо рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рд╕реА рдордХреНрдЦреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛, рдЬреЛ рдЗрд╕ рддрдереНрдп рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╣рд░ рдХреЛрдИ рджреЛ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЕрдкрдиреЗ "рдкреБрд╕реНрддрдХрд╛рд▓рдп" рдореЗрдВ рдПрдХ рдФрд░ JSON рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрдкрдирд╛ рдХрд░реНрддрд╡реНрдп рд╕рдордЭрддрд╛ рд╣реИред рдирд╛рдЧрд░рд┐рдХ, рдпрд╣ рдХрдм рд░реБрдХреЗрдЧрд╛? рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Google рдФрд░ Facebook рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдирд╛рдордорд╛рддреНрд░ SBJSON, рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдЕрд╕рдВрдЧрдд рд╣реИред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рд╛рдЗрд▓, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди, рдореБрдЭреЗ рдбрд░ рд╣реИ, Apple рд╕реЗ рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг, iOS рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рдирдпрд╛ рд╢рдмреНрдж, Json-Hell рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ JSON рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдФрд░ рд╕рд╛рде рд╣реА zlib, рдФрд░ рдЕрдиреНрдп рд╕рд╛рдорд╛рди) рдХреЛ рдПрдХ рд╣реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдореЗрдВ рд░рдЦреЗрдВ, рдФрд░ рдмрд▓ рдЖрдкрдХреЗ рд╕рд╛рде рд╣реЛ рд╕рдХрддрд╛ рд╣реИред