-3

こんにちは、Facebook iOS SDK を使い始めたばかりで、Facebook に簡単にサインインできますが、ユーザーのフルネームを取得して UILabel に表示する方法を理解するのに問題があります。また、私はUIViewControllerからこれを行っていますが、これまでインターネットで見たものはすべてアプリデリゲートで行われていますが、デリゲートから実行したくありません。適切な場所ではありませんこれはUIViewControllerに入れたいので、ボタンを押すとFacebookにサインインできます。Facebook SDK は、初めて使用するので複雑に思えます。

編集:私のコードの一部をここに示します。これはView Controllerにあります:

-(void)createfbInstance {

Facebook* fb = [[Facebook alloc] initWithAppId:FB_APP_ID andDelegate:self];
self.facebook = fb;

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] 
    && [defaults objectForKey:@"FBExpirationDateKey"]) {
    facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
    facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}

if (![facebook isSessionValid]) {
    NSArray* permissions = [[NSArray alloc] initWithObjects:@"user_about_me", nil];
    [facebook authorize:permissions];
} 
}

Facebookのチュートリアルのように設定してから、グラフのパスを指定してリクエストを送信してみます:

- (void)fbDidLogin {

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];

FBAppDelegate* appDelegate = (FBAppDelegate*)[[UIApplication sharedApplication] delegate];
[appDelegate.facebook requestWithGraphPath:@"name" andDelegate:self];
}

次に、リクエストの受信を試みます。

 - (void)request:(FBRequest *)request didLoad:(id)result {

 }

申し訳ありませんが、イライラしてそのメソッドからコードを削除しました。そして、デリゲートには Facebook プロパティがあります

@property (nonatomic, retain) Facebook* Facebook;

ファイルには他のコードがありますが、これが最も重要なコードのようです。

4

1 に答える 1

1

Facebook API にアクセスする必要があるどのクラスでも、次のファイルを (ヘッダー ファイルに) 含める必要があります。

#import "FBConnect.h"
#import "YOUR_APP_DELEGATE.h"

また、クラスにFBRequestDelegateデリゲートを実装させます。

次に、それを使用するには、次のようにします。

    YOURAPPDELEGATE *appDelegate = (YOURAPPDELEGATE*)[[UIApplication sharedApplication] delegate];

これで、デリゲートにある Facebook プロパティにアクセスして、API にアクセスできるようになりました。

次に、ビュー コントローラーにメソッドを追加して- (void)request:(FBRequest *)request didLoad:(id)result、応答を受信できるようにする必要があります。

だから今、あなたは呼び出すことができます

        [appDelegate.facebook requestWithGraphPath:@"APICALLHERE" andDelegate:self];

これで、メソッドで応答を受け取り、request:didLoad:それで好きなことを行うことができます。

于 2012-07-18T01:45:14.753 に答える