2

私は何週間もチュートリアルを見てきましたが、iOS で FB を実装するストーリーボードの例を見つけることができませんでした。

アプリでFBloginscreenを開き、アプリのユーザー認証をリクエストしてからアプリに戻ります...他のユーザーと同様に、fbdidloginおよびhandleopenurlメソッドは呼び出されません。私は何か間違ったことをしていると確信していますが、何がわからないのですか。ストーリーボードでデフォルトのView Controllerを使用しています(プログラムでVCを作成していません)ので、それで何かをする必要があるかもしれません。

handleopenurl メソッドは、view controller.m ファイルではなくアプリの delegate.m ファイルにある必要があることを理解しているのですが、それをどのように記述する必要があるのか​​ 、作成した UIViewController オブジェクトを VC に接続する方法がわかりません私のストーリーボード(私が使用しているボタンとラベルのあるもの)。

ViewController.h (relevant to FB)

#import "FBConnect.h"

@interface ViewController : UIViewController
<UIImagePickerControllerDelegate, 
UINavigationControllerDelegate, FBSessionDelegate, FBDialogDelegate>
{
Facebook *facebook; 
}

@property (nonatomic,retain) Facebook *facebook;'

ViewController.m (relevant to FB)

#import "ViewController.h"

@implementation ViewController;
@synthesize facebook;   

-(void)LogintoFB
{
    facebook = [[Facebook alloc] initWithAppId:@"345872345487883" andDelegate:self];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([defaults objectForKey:@"FBAccessTokenKey"] 
        && [defaults objectForKey:@"FBExpirationDateKey"]) {
        facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
        facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
    }
    if (![facebook isSessionValid]) {
        [facebook authorize:nil];
        NSLog(@"did log in");
    }


}
// Pre iOS 4.2 support
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    NSLog(@"-4.2 got calleld");
    return [facebook handleOpenURL:url]; 
}
// For iOS 4.2+ support
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    NSLog(@"4.2+ got called");
    return [facebook handleOpenURL:url]; 
}
}
- (void)fbDidLogin {
    NSLog(@"fbDidLogin");
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
    [defaults synchronize];


    [facebook dialog:@"feed" andDelegate:self];


}'

また、iOS で Facebook を実装するときにストーリーボードを使用したチュートリアルを教えていただければ幸いです。

ありがとう!

4

1 に答える 1

0

-(BOOL)application:openURL:sourceApplication:annotation:アプリデリゲートで実装する必要があります。

プロパティを appDelegate に追加します。

@property (nonatomic, strong) Facebook *facebook;

合成して!

logintoFB メソッドで、Facebook オブジェクトを作成した後にこれを追加します (AppDelegate は appDelegate クラス名が何であれ)。

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.facebook = facebook;
于 2012-08-05T03:18:02.227 に答える