タイトルが示唆するように、私は今、新しいFacebook SDKを利用しています - ここ - - iOSアプリケーション内。
私はFacebook開発者サイトで紹介されたこのの紹介をたどりました。すべて動作します少なくともその実装に応じて、そうするべきです。
物事を行う彼らのやり方は、アプリケーションデリゲート内の一連のメソッドと呼び出しを介して、ユーザーにapplicationDidFinishLaunchingが呼び出された後に自分のアカウントをアプリに接続する選択肢が提示されることを意味します。
私は代わりに、アプリケーションの他の場所に埋め込まれたビューコントローラ内のボタンの選択時にのみこれを強制するのが好きです。つまり、私はapplicationDidFinishLaunchingが呼び出されたときに承認に対処したくありません - 私はそれを強制するビューコントローラで私自身のメソッドをしたいです。また、私はFacebookのクラスをいくつかの独自のView Controllerから参照することになります。
私は遠くに徹底的に調査し、これに対処するために完全に説明された解決策(または全く、まったく何か)を考え出すことはまだありません。誰かがこれについてどうやって行くかについてのアイデアがあるなら、私に知らせてください。 StackOverflowはほとんどの時間の最後の手段です:)
編集:ベリリウムが下に上がったので、私は単に、アプリケーションデリゲートにあるすべてのものを取り、それを個々のビューコントローラに取り込むことができます。それは機能しますが、これはこのユニークな状況を処理する最善の方法ですか、それともより良い実装があるのでしょうか?
ありがとうございました、
以下の関連コード:
sampleAppDelegate.h
@interface sampleAppDelegate : NSObject {
Facebook *facebook;
}
@property (nonatomic, retain) Facebook *facebook;
@end
sampleAppDelegate.m
@synthesize facebook;
facebook = [[Facebook alloc] initWithAppId:@"102698856525645" 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]) {
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"offline_access",
@"publish_stream",
nil];
[facebook authorize:permissions];
[permissions release];
}
}
//For 4.2+ support
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [facebook handleOpenURL:url];
}
- (void)fbDidLogin {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
/*methods required by Facebook SDK to handle issues with connectivity--all currently empty*/
viewController.h
#import "FBConnect.h"
#import "sampleAppDelegate.h"
@class sampleAppDelegate;
@interface viewController : UIViewController {
Facebook *facebook;
UnitedUpdatesAppDelegate *facebookSampleAppDelegate;
}
@property (nonatomic, retain) sampleAppDelegate *appDelegate;
@property (nonatomic, retain) Facebook *facebook;
viewController.m
-(void) facebookPost {
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"http://stackoverflow.com", @"link",
@"Message name", @"name",
@"Caption", @"caption",
@"Description", @"description",
@"Message", @"message",
nil];
[sampleAppDelegate dialog:@"feed" andParams:params andDelegate: sampleAppDelegate];
}