Хорошо, это может показаться дубликатом, но я ответил на все вопросы, связанные с проблемой, и я все еще не могу заставить это работать для моего приложения. .
Я следил за руководством по iOS на сайте разработчиков Facebook и сделал следующее:
Версии: XCode 4.3.2 для Lion, iOS 5.1, Facebook iOS 4.1.1
Все это, и я до сих пор не могу заставить Facebook вернуть управление моему приложению, когда оно авторизуется. Вместо этого он просто остается в Facebook.
Код: (Обратите внимание, что FB_APP_ID изменен на основной номер для просмотра здесь)
AppDelegate.h:
#import <UIKit/UIKit.h>
#import "FBConnect.h"
#define FB_APP_ID @"1234567890"
@interface AppDelegate : UIResponder <UIApplicationDelegate, FBSessionDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (nonatomic, strong) Facebook* facebook;
@end
AppDelegate.m:
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window = _window;
@synthesize facebook = _facebook;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
_facebook = [[Facebook alloc] initWithAppId:FB_APP_ID andDelegate:self];
if (![_facebook isSessionValid])
{
[_facebook authorize:nil];
}
}
- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL *)url
{
return [_facebook handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [_facebook handleOpenURL:url];
}
- (void)fbDidLogin
{
NSLog(@"App logged in");
}
- (void)fbDidNotLogin:(BOOL)cancelled
{
NSLog(@"App did not login");
}
@end
Соответствующий порт Info.plist:
Экран приложения Facebook (в основном розовый) :
Примечание. Я попробовал это только с базовыми настройками, а также с настройками родного приложения iOS с поддельным идентификатором магазина iTunes, но с тем же идентификатором пакета из моего профиля подготовки.
Что бы я ни делал, он всегда загружает Facebook и просит авторизовать мое приложение, а затем просто закрывает окно экрана авторизации и остается на моем экране Facebook вместо того, чтобы вернуться в мое приложение.
Также обратите внимание: я знаю, что он всегда будет спрашивать, потому что я не проверяю токен авторизации и дату истечения срока действия... это следующий шаг... сейчас я хочу, по крайней мере, заставить его вернуться к мое приложение, прежде чем я буду беспокоиться об этом.
Я что-то пропустил? Что еще я могу попытаться заставить Facebook вернуться в мое приложение?
РЕДАКТИРОВАТЬ: Кроме того, при отладке я не могу найти ни одного места, где по какой-либо причине вызывается openURL.
РЕДАКТИРОВАТЬ № 2: При запуске на симуляторе он загружает диалог FB через Safari (как и ожидалось), а затем, когда я авторизуюсь, Safari выдает ошибку, как будто URL-адрес, который они пытаются использовать, чтобы вернуться к моему приложение недопустимо:
Это по-прежнему мало что мне говорит, поскольку мой fb1234567890 настроен правильно, насколько я знаю в Info.plist.