Нативная система единого входа Facebook для iOS не вернется в приложение

Хорошо, это может показаться дубликатом, но я ответил на все вопросы, связанные с проблемой, и я все еще не могу заставить это работать для моего приложения. .

Я следил за руководством по iOS на сайте разработчиков Facebook и сделал следующее:

  1. Создал приложение Facebook, чтобы получить идентификатор приложения Facebook.
  2. Я назначил этот идентификатор приложения константе и использую его для инициализации объекта Facebook в своем приложении.
  3. Я убедился, что мое приложение помечено как многозадачное.
  4. Я настроил fbAPP_ID в списке plist в раскрывающемся списке URL.
  5. Я сделал свой AppDelegate FBSessionDelegate и реализовал очень простой делегат fbDidLogin и fbDidNotLogin. методы.

Версии: 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:

enter image description here

Экран приложения Facebook (в основном розовый) :

Facebook App screen

Примечание. Я попробовал это только с базовыми настройками, а также с настройками родного приложения iOS с поддельным идентификатором магазина iTunes, но с тем же идентификатором пакета из моего профиля подготовки.

Что бы я ни делал, он всегда загружает Facebook и просит авторизовать мое приложение, а затем просто закрывает окно экрана авторизации и остается на моем экране Facebook вместо того, чтобы вернуться в мое приложение.

Также обратите внимание: я знаю, что он всегда будет спрашивать, потому что я не проверяю токен авторизации и дату истечения срока действия... это следующий шаг... сейчас я хочу, по крайней мере, заставить его вернуться к мое приложение, прежде чем я буду беспокоиться об этом.

Я что-то пропустил? Что еще я могу попытаться заставить Facebook вернуться в мое приложение?

РЕДАКТИРОВАТЬ: Кроме того, при отладке я не могу найти ни одного места, где по какой-либо причине вызывается openURL.

РЕДАКТИРОВАТЬ № 2: При запуске на симуляторе он загружает диалог FB через Safari (как и ожидалось), а затем, когда я авторизуюсь, Safari выдает ошибку, как будто URL-адрес, который они пытаются использовать, чтобы вернуться к моему приложение недопустимо:

simulator safari error

Это по-прежнему мало что мне говорит, поскольку мой fb1234567890 настроен правильно, насколько я знаю в Info.plist.

12
задан valheru 16 May 2012 в 22:36
поделиться