とても簡単な質問があります。
FB チュートリアルhttps://developers.facebook.com/docs/mobile/ios/build/didFinishLaunchingWithOptionsでは、アプリケーションの起動直後にログインが開始されます。
タップでログインしてからcallback、FB ウォールでメッセージを送信する必要があります。Hackbook アプリのサンプル デザイン アプリケーションは、この目的には複雑すぎると思います。
これを達成する最も簡単な方法は何ですか?
UPD: Hackbookの例に従いましたが、ViewControllersまだ取得できませんでしたcallback:(
yAppDelegate.h:
#輸入
#import "FBConnect.h"
@interface yAppDelegate : UIResponder
{
フェイスブックフェイスブック;
}
@property (強力、非アトミック) UIWindow *window;
@property (非アトミック、保持) Facebook *facebook;
@終わり
yAppDelegate.m:
#import "yAppDelegate.h"
#import "yViewController.h"
static NSString* kAppId = @"350435425024264";
@実装 yAppDelegate
@synthesize ウィンドウ = _window;
@synthesize フェイスブック;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
yViewController *viewController = [[yViewController alloc] init];
facebook = [[Facebook 割り当て] initWithAppId:kAppId andDelegate:viewController];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) {
facebook.accessToken = [デフォルト objectForKey:@"FBAccessTokenKey"];
facebook.expirationDate = [デフォルト objectForKey:@"FBExpirationDateKey"];
}
はいを返します。
}
- (void)applicationDidBecomeActive:(UIApplication *)アプリケーション{
[[self facebook] extendsAccessTokenIfNeeded];
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [self.facebook handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication 注釈:(id)annotation {
return [self.facebook handleOpenURL:url];
}
yViewController.h:
#輸入
#import "FBConnect.h"
@interface yViewController : UIViewController
{
NSArray *パーミッション;
}
@property (非アトミック、保持) NSArray *パーミッション。
@終わり
yViewController.m
#import "yViewController.h"
#import "yAppDelegate.h"
#import "FBConnect.h"
@interface yViewController ()
@終わり
@実装 yViewController
@synthesize パーミッション;
- (IBAction)buttonPressed:(UIButton *)送信者 {
NSLog(@"ボタンが押されました!");
permissions = [[NSArray alloc] initWithObjects:@"offline_access", nil];
yAppDelegate *delegate = (yAppDelegate *)[UIApplication sharedApplication].delegate;
if (![[フェイスブックのデリゲート] isSessionValid]) {
[[facebook のデリゲート] 承認:権限];
} そうしないと {
//[自己 showLoggedIn];
}
NSLog(@"ログイン!!");
}
- (void)viewDidLoad
{
[super viewDidLoad];
// 通常はペン先からビューをロードした後、追加のセットアップを行います。
}
- (void)viewDidUnload
{
[super viewDidUnload];
// メイン ビューの保持されているサブビューを解放します。
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation が必要です
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
#pragma mark - FBSessionDelegate メソッド
/**
* ユーザーが正常にログインしたときに呼び出されます。
*/
- (void)fbDidLogin {
NSLog(@"ログインしました");
}
-(void)fbDidExtendToken:(NSString *)accessToken expiresAt:(NSDate *)expiresAt {
NSLog(@"トークン拡張");
}
/**
* ユーザーが承認ダイアログをキャンセルしたときに呼び出されます。
*/
-(void)fbDidNotLogin:(BOOL)キャンセル {
NSLog(@"fbDidNotLogin");
}
/**
* リクエストのログアウトが成功したときに呼び出されます。
*/
- (void)fbDidLogout {
NSLog(@"fbDidLogout");
// 保存されている承認情報が存在する場合は削除します。
// クリアしてもいい (ログアウト、セッション無効、アプリ無許可)
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[デフォルト removeObjectForKey:@"FBAccessTokenKey"];
[デフォルト removeObjectForKey:@"FBExpirationDateKey"];
[デフォルト同期];
}
/**
* セッションの有効期限が切れたときに呼び出されます。
*/
- (void)fbSessionInvalidated {
NSLog(@"fbSessionInvalidated");
[自己 fbDidLogout];
}
#pragma mark - FBRequestDelegate メソッド
/**
* Facebook API リクエストがレスポンスを返したときに呼び出されます。
*
* このコールバックにより、生の応答にアクセスできます。前に呼ばれた
* (void)request:(FBRequest *)request didLoad:(id)result,
* 解析された応答オブジェクトが渡されます。
*/
- (void)request:(FBRequest *)request didReceiveResponse:(NSURLResponse *)response {
//NSLog(@"受信応答");
}
/**
* リクエストが返され、そのレスポンスが解析されたときに呼び出されます
* オブジェクト。
*
* 結果のオブジェクトは、辞書、配列、または文字列のいずれかになります。
* API レスポンスの形式について。生の応答にアクセスする必要がある場合は、
* 使用する:
*
* (void)request:(FBRequest *)request
* didReceiveResponse:(NSURLResponse *) 応答
*/
- (void)request:(FBRequest *)request didLoad:(id)result {
NSLog(@"-(void)request");
}
/**
* エラーにより Facebook API リクエストが完了できない場合に呼び出されます
* 成功しました。
*/
- (void)request:(FBRequest *)request didFailWithError:(NSError *)error {
NSLog(@"エラー メッセージ: %@", [[エラー userInfo] objectForKey:@"error_msg"]);
NSLog(@"エラーコード: %d", [エラーコード]);
}
@終わり