Facebook iOS SDK をアプリに統合しようとしています。アプリのデリゲート ヘッダーで次の操作を行います。
#import <UIKit/UIKit.h>
#import "Facebook.h"
#import "FBConnect.h"
@class ViewController;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
Facebook *facebook;
}
@property (nonatomic,strong) Facebook *facebook;
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) ViewController *viewController;
@end
実装ファイルのメソッド didFinishLaunchingWithOptions メソッドで:
MyFacebooDelegate *controllerDelegate = [[MyFacebooDelegate alloc] init];
facebook = [[Facebook alloc] initWithAppId:appID andDelegate:controllerDelegate];
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
if([userDefault objectForKey:@"FBAccessTokenKey"] && [userDefault objectForKey:@"FBExpirationDateKey"])
{
facebook.accessToken = [userDefault objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [userDefault objectForKey:@"FBExpirationDateKey"];
}
if(![facebook isSessionValid])
{
NSArray *permision = [[NSArray alloc]initWithObjects:@"read_stream",nil] ;
[facebook authorize:permision];
}
MyFacebooDelegate クラスは、FBSessionDelegate などの Facebook デリゲートを実装する場所です。
また、handleOpenURL と OpenURL も処理しました。アプリを実行すると、Safari で Facebook の認証画面が表示され、[OK] を押すと画面が消えてアプリに戻りますが、アプリがクラッシュして終了する場合があります。コンパイラはエラーを教えてくれます:
- (void)fbDialogLogin:(NSString *)token expirationDate:(NSDate *)expirationDate {
self.accessToken = token;
self.expirationDate = expirationDate;
[_lastAccessTokenUpdate release];
_lastAccessTokenUpdate = [[NSDate date] retain];
[self reloadFrictionlessRecipientCache];
if ([self.sessionDelegate respondsToSelector:@selector(fbDidLogin)]) {
[self.sessionDelegate fbDidLogin];
}
具体的には、コンパイラは次の行を示します。
if ([self.sessionDelegate respondsToSelector:@selector(fbDidLogin)]) {
どんな助けでも大歓迎です