рдЖрдЬ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрддреНрд╡ рдЖрдкрдХреЗ рджреЛрд╕реНрддреЛрдВ, рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рдФрд░ рдкреВрд░реА рджреБрдирд┐рдпрд╛ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХрд╣рд╛рдВ рдФрд░ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдЗрд╕рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рдиреЗрдЯрд╡рд░реНрдХ, рдмрджрд▓реЗ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдХрд╛рдо рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдФрд░ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдПрд╕рдбреАрдХреЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рд╣рдо iOS рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдлреЗрд╕рдмреБрдХ рдПрд╕рдбреАрдХреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рдЬрдм рдореИрдВрдиреЗ рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдлреЗрд╕рдмреБрдХ рдПрд╕рдбреАрдХреЗ рдХреЛ рд╕рдордЭрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛, рддрдм рднреА рдлреЗрд╕рдмреБрдХ-рдЖрдИрдлреЛрди-рдПрд╕рдбреАрдХреЗ рдирд╛рдордХ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдерд╛ред рд╡рд╣ рдЕрдм рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЕрдЬреАрдм рджреБрд░реНрдШрдЯрдирд╛рдУрдВ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдХреНрдпрд╛ рдХреБрдЫ рдирдпрд╛ рд╕рд╛рдордиреЗ рдЖрдпрд╛ рд╣реИред рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрддрд┐рдд рд╣реЛ рдЧрдИ, рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрдм facebook-ios-sdk рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд╣рд╛рдВ, рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдЕрднреА рднреА рд╕рд░рд▓ рд╣реИред рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рд╡реЗ рдЭреВрда рдирд╣реАрдВ рдмреЛрд▓рддреЗ рдереЗред
рдЖрдк рдпрд╣рд╛рдБ рд╕реЗ SDK -
https://github.com/facebook/facebook-ios-sdk рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
Xcode 4.0 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реАрдзреЗ SDK рдХреЛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдСрд░реНрдЧрдирд╛рдЗрдЬрд╝рд░ рдЦреЛрд▓реЗрдВ, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗрдХреНрд╢рди рдкрд░ рдЬрд╛рдПрдБ, рдФрд░ рдирд┐рдЪрд▓реЗ рдмрд╛рдПрдБ рдХреЛрдиреЗ рдореЗрдВ рдкреНрд▓рд╕ рд╕рд╛рдЗрди рдХреЗ рдмрд╛рдж, рдЪреЗрдХрдЖрдЙрдЯ рдпрд╛ рдХреНрд▓реЛрди рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдЪреБрдиреЗрдВред

рдирдореВрдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдЙрд╕реЗ рддреБрд░рдВрдд рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереАред рдХреБрдЫ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдирдП Xcode4 рдореЗрдВ рдЗрд╕рдХреЗ рд╕рдВрдХрд▓рди рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЧрд▓рдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдЖрдкрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рдмрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕рдм рдХреБрдЫ рдорд╛рд░рдирд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдХреЗрд╡рд▓ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ:
рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ - рдорд╛рдирдХ (рд╣рдерд┐рдпрд╛рд░ 6, рд╣рдерд┐рдпрд╛рд░ 7)
BaseSDK - рдирд╡реАрдирддрдо iOS (iOS 4.3)

рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдиреАрдЪреЗ рдПрдХ рдХрд╛рд░реНрдп рдкреНрд░рд╛рд░реВрдк рд╕рдВрд▓рдЧреНрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рддреБрд░рдВрдд рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рдВрддреНрд╡рдирд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ - "2011-03-29 11: 49: 02.301 рдбреЗрдореЛрдПрдк [3098: 207] рд▓рд╛рдкрддрд╛ рдРрдк рдЖрдИрдбреА!"ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рдЖрдИрдбреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХреА рд╣реИред
рд╣рдо
http://www.facebook.com/developers/ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдпрд╛ рддреЛ рдЕрдкрдиреЗ рдореМрдЬреВрджрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ "+ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╕рд░рд▓ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рд╕рд┐рд╕реНрдЯрдо рдЖрдкрдХреЛ рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рдПрдкреНрд▓реАрдХреЗрд╢рди рдЖрдИрдбреА" рдмрддрд╛рдПрдЧрд╛ред рдЙрд╕реЗ рдФрд░ рдХреЗрд╡рд▓ рд╣рдореЗрдВ рдПрд╕рдбреАрдХреЗ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЙрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдореЗрдВ DemoAppViewController.m рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рда рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
// Your Facebook APP Id must be set before running this example
// See www.facebook.com/developers/createapp.php
// Also, your application must bind to the fb[app_id]:// URL
// scheme (substitue [app_id] for your real Facebook app id).
static NSString* kAppId = nil;
рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рд╢реВрдиреНрдп рдмрджрд▓реЗрдВред рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдпрд╣ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдЖрдИрдбреА 11111111111 рд╣реИ
static NSString* kAppId = @"11111111111";
рд╣рдо рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рд░рд┐рд╕реЛрд░реНрд╕ / рдбреЗрдореЛрдПрдк-рдЗрдиреНрдлреЛ.рдкреНрд▓рд┐рд╕реНрдЯ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ fb111111111 рдХреЗ рд╕рд╛рде рдЪрд┐рддреНрд░ рдореЗрдВ рдорд╛рди fb [your-app-id] рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ - рдФрд░ рдХреЛрд╖реНрдардХ рдЖрдкрдХреЛ рднреНрд░рдорд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдкрдХреЛ рдЙрдирдХреЗ рдмрд┐рдирд╛ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!

рд╡рд╣ рд╕рдм рд╣реИ! рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИред рд╣рдо рджреМрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рд╣рдо рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдирд┐рдордВрддреНрд░рдг рджреЗрдЦрддреЗ рд╣реИрдВред рдИрдореЗрд▓ рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рд╕реНрдХреНрд░реАрди рд╣рдорд╕реЗ рдкреВрдЫрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЕрдиреБрдорддрд┐ рджреЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдПрдХ рдмрд╣реБрдд рд╣реА рдиреНрдпреВрдирддрдо рдбрд┐рдЬрд╛рдЗрди рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВред рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реБрдХреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдЕрдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, XIB рдлрд╝рд╛рдЗрд▓ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

рдпрд╣ рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рд╣реИ - 5 рдмрдЯрдиред рдЬрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХреЗрд╡рд▓ FBLoginButton рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣ рдЙрд╕реА рдирд╛рдо рдХреЗ рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред ViewDidLoad рд╡рд┐рдзрд┐ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ
/**
* Set initial view
*/
(void)viewDidLoad {
// facebook
_facebook = [[Facebook alloc] initWithAppId:kAppId];
[self.label setText:@"Please log in"];
//
_getUserInfoButton.hidden = YES;
_getPublicInfoButton.hidden = YES;
_publishButton.hidden = YES;
_uploadPhotoButton.hidden = YES;
_fbButton.isLoggedIn = NO;
[_fbButton updateImage];
}
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрдм рдлреЗрд╕рдмреБрдХ рд╡рд░реНрдЧ рдХреЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ - рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдИрдбреА рдФрд░ рдЙрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
_facebook = [[Facebook alloc] initWithAppId:kAppId];
рдЬрдм рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
/**
* Called on a login/logout button click.
*/
- (IBAction)fbButtonClick:(id)sender {
if (_fbButton.isLoggedIn) {
[self logout];
} else {
[self login];
}
}
рдФрд░ рдЕрдЧрд░ рд╣рдордиреЗ рдЕрднреА рддрдХ рдкреНрд░рд╡реЗрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдо рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВ:
/**
* Show the authorization dialog.
*/
- (void)login {
[_facebook authorize:_permissions delegate:self];
}
рдЬрд╣рд╛рдВ _permissions рдлреЗрд╕рдмреБрдХ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд░рддреЗ рд╕рдордп рдЕрдзрд┐рдХрд╛рд░ рдорд╛рдВрдЧрддреЗ рд╣реИрдВ
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
...
_permissions = [[NSArray arrayWithObjects:
@"read_stream", @"offline_access",nil] retain];
}
...
}
рдпрд╣рд╛рдБ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ -
http://developers.facebook.com/docs/authentication/permissions/ , read_stream рдлрд╝реАрдб рдкрдврд╝рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ, рдФрд░ offline_access рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЬреБрдбрд╝реЗ рд░рд╣рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЗрд╕ рдЕрдзрд┐рдХрд╛рд░ рдХреЗ рдмрд┐рдирд╛, рдПрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдХрд╛рдлреА рддреЗрдЬрд╝реА рд╕реЗ рдмрд╛рд╣рд░ рдЬрд▓реЗрдВрдЧреЗред рд╣рдо рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗред рд╡реИрд╕реЗ, рдпрд╣ рдЗрди рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рдереА рдЬреЛ рд╣рдордиреЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдерд╛ рдЬрдм рд╣рдордиреЗ рдКрдкрд░ рдЕрдиреБрдорддрд┐ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдерд╛ред
рдпрд╣рд╛рдБ рджреВрд╕рд░рд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреЗ рдЖрдк рдХреЛ, рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛, (рд╕реНрд╡) рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдлреЗрд╕рдмреБрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╕рдВрджреЗрд╢ рдЖрддреЗ рд╣реА рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓реЗрдВрдЧреЗред
рдПрдХ рдФрд░ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдХрд┐ рд╣рдо рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдмрд╛рдж рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдкрд░ рдХреИрд╕реЗ рд▓реМрдЯрддреЗ рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ, рд╣рдордиреЗ рд╕рдВрд╕рд╛рдзрди / DemoApp-Info.plist рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдКрдкрд░ рдХреБрдЫ рдкреИрд░рд╛рдореАрдЯрд░ рджрд░реНрдЬ рдХрд┐рдП рд╣реИрдВред рдФрд░ рдЕрдЧрд░ рд╣рдо рдлрд╛рдЗрд▓ рдХреЛ DemoAppAppDelegate.m рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рд╣рдо рд╡рд╣рд╛рдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рддрд░реАрдХрд╛ рджреЗрдЦреЗрдВрдЧреЗ, рдЬреЛ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдкрд░ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[controller facebook] handleOpenURL:url];
}
рдЗрд╕рд▓рд┐рдП рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВред рдпрджрд┐ рдЖрдк рдЦрд░реЛрдВрдЪ рд╕реЗ рдЖрд╡реЗрджрди рдХрд░реЗрдВрдЧреЗ, рддреЛ рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рдлрд▓ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
1. рдХреЛрдб рдореЗрдВ рдРрдк рдЖрдИрдбреА рдХреЛ рдЗрдВрдбрд┐рдХреЗрдЯ рдХрд░реЗрдВ
2. рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдРрдк рдЖрдИрдбреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ
3. рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ * AppDelegate.m рдореЗрдВ, рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[controller facebook] handleOpenURL:url];
}
рдЕрдВрддрд┐рдо рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмрд┐рдирд╛, рдЖрдк рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдВрдбреЛ рдХреЗ рдмрд╛рдж рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдкрд░ рдирд╣реАрдВ рд▓реМрдЯреЗрдВрдЧреЗред
рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд▓реМрдЯрд╛рдпрд╛, рддреАрди рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред
/**
* , .
*/
- (void)fbDidLogin {
[self.label setText:@"logged in"];
_getUserInfoButton.hidden = NO;
_getPublicInfoButton.hidden = NO;
_publishButton.hidden = NO;
_uploadPhotoButton.hidden = NO;
_fbButton.isLoggedIn = YES;
[_fbButton updateImage];
}
/**
* , .
*/
-(void)fbDidNotLogin:(BOOL)cancelled {
NSLog(@"did not login");
}
/**
* , logout .
*/
- (void)fbDidLogout {
[self.label setText:@"Please log in"];
_getUserInfoButton.hidden = YES;
_getPublicInfoButton.hidden = YES;
_publishButton.hidden = YES;
_uploadPhotoButton.hidden = YES;
_fbButton.isLoggedIn = NO;
[_fbButton updateImage];
}
рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЕрдиреНрдп рд╕рднреА рдмрдЯрди рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдПред рдЖрдк рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ; рд╣рдо рдмрд╛рдж рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЙрдирдХреЗ рдкрд╛рд╕ рд▓реМрдЯреЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЙрд▓ рдЧреНрд░рд╛рдл рдПрдкреАрдЖрдИ рдмрдЯрди рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдФрд░ рдЕрдВрддрд┐рдо рдирд╛рдо рджрд┐рдЦрд╛рдПрдЧрд╛, рдФрд░ рдХреЙрд▓ рд░реАрд╕реНрдЯ рдПрдкреАрдЖрдИ рдмрдЯрди рдЖрдкрдХреЛ рдЖрдИрдбреА = 4 рдореЗрдВ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкрд╣рд▓рд╛ рдФрд░ рдЕрдВрддрд┐рдо рдирд╛рдо рдорд╛рдЗрдХ рдЬрд╝рдХрд░рдмрд░реНрдЧ рджрд┐рдЦрд╛рдПрдЧрд╛ред рдЖрдИрдбреА = 1 рдХреЗ рддрд╣рдд рдХреМрди рдЫреБрдкрд╛ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЕрд╕рдлрд▓ рд░рд╣рд╛ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛ред рддреЛ, рдЬреЛ рд▓реЛрдЧ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡реЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рдЬрдм рдореИрдВ рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд▓рд┐рдЦ рд░рд╣рд╛ рдерд╛, рддреЛ рдореБрдЭреЗ рдХрдо рд╕реЗ рдХрдо рдХрдИ рдмрд╛рд░ рд▓реЙрдЧрд┐рди рдмрдЯрди рдХреЛ рдлрд┐рд░ рд╕реЗ рджрдмрд╛рдирд╛ рдкрдбрд╝рд╛ред рдРрд╕рд╛ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЖрд╡реЗрджрди рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рдлреЗрд╕рдмреБрдХ рдкрд░ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдм рдЗрд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдмрд╕ рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рд╣рдо NSUserDefaults рдореЗрдВ рджреЛ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВред viewDidLoad рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
- (void)viewDidLoad {
_facebook = [[Facebook alloc] initWithAppId:kAppId];
_facebook.accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"AccessToken"];
_facebook.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"];
if ([_facebook isSessionValid] == NO) {
[self.label setText:@"Please log in"];
_getUserInfoButton.hidden = YES;
_getPublicInfoButton.hidden = YES;
_publishButton.hidden = YES;
_uploadPhotoButton.hidden = YES;
_fbButton.isLoggedIn = NO;
[_fbButton updateImage];
} else {
[self.label setText:@"logged in"];
_getUserInfoButton.hidden = NO;
_getPublicInfoButton.hidden = NO;
_publishButton.hidden = NO;
_uploadPhotoButton.hidden = NO;
_fbButton.isLoggedIn = YES;
[_fbButton updateImage];
}
}
рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ (isSessionValid) рд╕рддреНрд░ рд╣рдорд╛рд░реЗ NSUserDefaults рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд AccessToken рдФрд░ expirationDate рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдорд╛рдиреНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓реЙрдЧ рдЗрди рд╣реИрдВ рдФрд░ рдЖрдЧреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдХреНрд░рдорд╢рдГ fbDidLogin рдФрд░ fbDidLogout рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ
fbDidLogin - рдкреИрд░рд╛рдореАрдЯрд░ рд▓рд┐рдЦреЗрдВ
[[NSUserDefaults standardUserDefaults] setObject:self.facebook.accessToken forKey:@"AccessToken"];
[[NSUserDefaults standardUserDefaults] setObject:self.facebook.expirationDate forKey:@"ExpirationDate"];
fbDidLogout - рдЙрдиреНрд╣реЗрдВ рд╢реВрдиреНрдп рдХрд░реЗрдВ
[[NSUserDefaults standardUserDefaults] setObject:nil forKey:@"AccessToken"];
[[NSUserDefaults standardUserDefaults] setObject:nil forKey:@"ExpirationDate"];
рд╣рдо рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЙрдЧ рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рдЕрдкрдирд╛ рдирд╛рдо рдЪреЗрдХ рдХрд░рддреЗ рд╣реИрдВ - рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рд▓реЙрдЧрдЖрдЙрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдП рдмрд┐рдирд╛ рд╣рдо рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЕрднреА рднреА рдлреЗрд╕рдмреБрдХ рдкрд░ рд╣реИрдВ - рд╣рдо рдЕрдкрдиреЗ рдирд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ - рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рд╕рд╣реА @ "offline_access" рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рдорд╛рдБрдЧрд╛ рдерд╛ред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдиреАрдЪреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдФрд░ рдЖрдЬ рдХреЗ рд▓реЗрдЦ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрд╡реЗрд░реА рддрдВрддреНрд░ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
Facebook рд╣рдореЗрдВ рдкреБрд░рд╛рдиреЗ REST API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп GRAPH API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЖрдЧреНрд░рд╣ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрднреА рднреА рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдкреГрд╖реНрда рдкрд░ (
http://developers.facebook.com/docs/reference/api/ ) рд╣рдо GRAPH API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдбреЗрдореЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ, рдлреЗрд╕рдмреБрдХ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
- (IBAction)getUserInfo:(id)sender {
[_facebook requestWithGraphPath:@"me" andDelegate:self];
}
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рд╣реЛрдЧрд╛
graph.facebook.com/btaylor{
"Id": "220439",
"рдирд╛рдо": "рдмреНрд░реЗрдЯ рдЯреЗрд▓рд░",
"First_name": "рдмреНрд░реЗрдЯ",
"рдЕрдВрддрд┐рдо_рдирд╛рдо": "рдЯреЗрд▓рд░",
"рд▓рд┐рдВрдХ": "
www.facebook.com/btaylor ",
"рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо": "btaylor",
"рд▓рд┐рдВрдЧ": "рдкреБрд░реБрд╖",
"рд▓реЛрдХреЗрд▓": "en_US"
}
рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЬрд╡рд╛рдм рдореЗрдВ рдПрдХ рдПрдирдПрд╕рдбреАрдЖрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдХреБрдВрдЬреА "рдирд╛рдо" рджреНрд╡рд╛рд░рд╛ рдЕрдкрдирд╛ рдкреВрд░рд╛ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рдЬрдм рд╣рдордиреЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЛ рдирд┐рдпреБрдХреНрдд рдХрд┐рдпрд╛, рддреЛ рд╣рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЛрдВ рдХреЛ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рдХрдЪреНрдЪреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░
- (void)request:(FBRequest *)request didReceiveResponse:(NSURLResponse *)response {
NSLog(@"received response");
}
рдФрд░ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЙрддреНрддрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ:
- (void)request:(FBRequest *)request didLoad:(id)result {
if ([result isKindOfClass:[NSArray class]]) {
result = [result objectAtIndex:0];
}
if ([result objectForKey:@"owner"]) {
[self.label setText:@"Photo upload Success"];
} else {
[self.label setText:[result objectForKey:@"name"]];
}
};
рдЙрддреНрддрд░ (рдкрд░рд┐рдгрд╛рдо) рдПрдХ рд╕рдВрдЦреНрдпрд╛, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдПрдХ рд╕рд░рдгреА рдпрд╛ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдореЗрдВ NSArray рдХреЗ рд░реВрдк рдореЗрдВ рддреБрд░рдВрдд рдПрдХ рдЙрддреНрддрд░ рдорд┐рд▓рд╛, рддреЛ рд╣рдореЗрдВ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рдХрдИ рдЙрддреНрддрд░ рдорд┐рд▓ рдЧрдП рдФрд░ рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрддреНрддрд░реЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рд╣рдордиреЗ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдХрд┐ рд╣рдо (рдореИрдВ) рдХреМрди рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм NS рд╕рд╣рдХрд░реНрдореА рдХреЗ рдкрд╛рд╕ рд╣реИ рдФрд░ рдХреЛрдИ рднреА рдорд╛рд▓рд┐рдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
[self.label setText:[result objectForKey:@"name"]];
рдЪреАрдЬреЛрдВ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреНрдпрд╛ рдкрд╕рдВрдж рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдиреБрд░реЛрдз рдмрджрд▓реЗрдВ:
- (IBAction)getUserInfo:(id)sender {
[_facebook requestWithGraphPath:@"me/likes" andDelegate:self];
}
рдпрджрд┐ рдЖрдк рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдлреЗрд╕рдмреБрдХ рд╕рд╛рдЗрдЯ рдкрд░ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рд╣реИ - рдХреЗрд╡рд▓ рдПрдХ рдбреЗрдЯрд╛ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдирдПрд╕рдмрд░реНрдбред рдпрд╣ рдХреБрдВрдЬреА "рдирд╛рдо", "рд╢реНрд░реЗрдгреА", "рдЖрдИрдбреА", "create_time" рдХреЗ рд╕рд╛рде NSDictionary рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛ред рдЕрдиреБрд░реЛрдзрд┐рдд рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдореЗрдВ "user_likes" рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рднреВрд▓рдирд╛ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЕрдиреНрдпрдерд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рдЦрд╛рд▓реА NSDictionary рд╡рд╕реНрддреБ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреА!
рдЗрд╕ рдЙрддреНрддрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреА рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
- (void)request:(FBRequest *)request didLoad:(id)result {
if ([result isKindOfClass:[NSArray class]]) {
result = [result objectAtIndex:0];
}
if ([result objectForKey:@"owner"]) {
[self.label setText:@"Photo upload Success"];
} else if ([result objectForKey:@"data"]){
NSArray *likes = [result objectForKey:@"data"];
NSString *text=@"You don't like Steve";
for (NSDictionary* mylike in likes) {
NSString *mylikeName = [mylike objectForKey:@"name"];
if ([mylikeName isEqualToString:@"Steve Jobs"]) {
text=@"You like Steve";
break;
}
}
[self.label setText:text];
}
};
рдпрджрд┐ рд╣рдореЗрдВ NS рдордВрджрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЙрддреНрддрд░ рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ рдХреБрдВрдЬреА "рдбреЗрдЯрд╛" рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓реНрдп рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рд╕рд░рдгреА рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдлрд╝реЗрд╕рдмреБрдХ рдкреЗрдЬреЛрдВ рдореЗрдВ рд╕реНрдЯреАрд╡ рдЬреЙрдмреНрд╕ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рд╣реИрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрд╣ рдорд┐рд▓рд╛, рдЗрд╕рд▓рд┐рдП рдЖрд╡реЗрджрди рдиреЗ рдореБрдЭреЗ "рдЖрдк рд╕реНрдЯреАрд╡ рдХреА рддрд░рд╣" рджрд┐рдпрд╛ред
рдореИрдВ рдпрд╣рд╛рдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рд░реБрдХреВрдВрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рднреА рдмрддрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЖрд╡реЗрджрди рд╕реЗ рджреАрд╡рд╛рд░ рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рдпрд╣ рдЕрдЧрд▓реА рдмрд╛рд░ рд╣реЛрдЧрд╛ред
рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореВрд▓ рд╣реИ , рд▓реЗрдХрд┐рди рдЧреБрдгреЛрдВ рдореЗрдВ рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рд╛рде, рддрд╛рдХрд┐ рдпрд╣ Xcode4 рдореЗрдВ рд╢реБрд░реВ рд╣реЛ
рдПрдХ рд╕рддреНрд░ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде
рдкрд░рд┐рдпреЛрдЬрдирд╛рд╕рдВрд╢реЛрдзрд┐рдд рдЕрдиреБрд░реЛрдз
рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЗрд╡рд▓ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдРрдкрд┐рдб рдЙрдирдореЗрдВ рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ :)
рдкреА рдПрд╕ рдФрд░ рдореИрдВ рднреА Habr├й рдкрд░ рдХреЛрдб рд╕реНрд╡рд░реВрдкрдг рдХреА рддрд░рд╣ :)