Nano Hash - криптовалюты, майнинг, программирование

fbDidLogin не вызывается и handleURL не вызывается

Я использую Facebook Connect со своим приложением. Все настроено, весь код БЫЛ рабочим. Примерно вчера я мог войти в систему с помощью своего приложения, а затем публиковать материалы и другие функции. Я не помню, чтобы я делал какие-то реальные изменения. Теперь, как обычно, всякий раз, когда я нажимаю «Войти», я перехожу на страницу Safari, где мне нужно подтвердить, что я хочу использовать это приложение, и там написано, под каким именем я вхожу. Если я нажму ок, я вернусь в приложение. В течение всего этого процесса в приложении Facebook никогда не входит в систему. ПОМНИТЕ: ТОЛЬКО ВЧЕРА ЭТО РАБОТАЕТ, Я НЕ ПОМНЮ, ЧТО ВНОСИЛ КАКИЕ-ЛИБО ИЗМЕНЕНИЯ! Вот как начинается подключение:

-(IBAction)connectToFacebook {

[loginButton setImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateNormal];
facebook = [[Facebook alloc] initWithAppId:@"387500177929927" 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]) {
    [facebook authorize:nil];
}    
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(makeVisibleButtons) userInfo:nil repeats:NO];
[timer setAccessibilityHint:@"timer"];
}

 -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   // JUST SO THAT HANDLE URL CAN GET CALLED

return YES;


}

Поэтому я нажимаю кнопку, чтобы вызвать этот IBAction. NSTimer не имеет отношения, просто для появления некоторых кнопок. Теперь эти два метода никогда не вызываются (когда я их регистрирую):

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
 sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
ConnectToFB *connect = [[ConnectToFB alloc] init];
return [connect.facebook handleOpenURL:url]; 
NSLog(@"url");
[connect release];
 }

- (void)fbDidLogin {

NSLog(@"log in");

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

Идентификатор приложения актуален, и мои схемы URL-адресов в информационном списке также актуальны. В чем проблема?


Ответы:


1

Я предполагаю, что ваше приложение не получает access_token для входа в facebook. Это может дать вам ноль.

Если это проблема. Затем подключитесь к FBDialog и

изменить это:

- (NSString *) getStringFromUrl: (NSString*) url needle:(NSString *) needle {
NSString * str = nil;
NSRange start = [url rangeOfString:needle];
if (start.location != NSNotFound) {
    // confirm that the parameter is not a partial name match
    unichar c = '?';
    if (start.location != 0) {
        c = [url characterAtIndex:start.location - 1];
    }
    if (c == '?' || c == '&') {        
        NSRange end = [[url substringFromIndex:start.location+start.length] rangeOfString:@"&"];
        NSUInteger offset = start.location+start.length;
        str = end.location == NSNotFound ?
            [url substringFromIndex:offset] : 
            [url substringWithRange:NSMakeRange(offset, end.location)];
        str = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    }
}    
return str;
}

с этим:

- (NSString *) getStringFromUrl: (NSString*) url needle:(NSString *) needle {
NSString * str = nil;
NSRange start = [url rangeOfString:needle];
if (start.location != NSNotFound) {
    NSRange end = [[url substringFromIndex:start.location+start.length] rangeOfString:@"&"];
    NSUInteger offset = start.location+start.length;
    str = end.location == NSNotFound
    ? [url substringFromIndex:offset]
    : [url substringWithRange:NSMakeRange(offset, end.location)];
    str = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}

return str;
}

Это может решить вашу проблему.

19.03.2012
  • Я никогда не реализовывал этот метод. Я добавил его, но он все еще не работает 20.03.2012
  • у вас есть токен доступа, когда вы перезваниваете из сафари? 20.03.2012
  • Я не уверен, что вы имеете в виду, мое приложение направляется в сафари, и когда пользователь нажимает «ОК» в диалоговом окне сафари Facebook, оно возвращается к приложению. Что вы имеете в виду, говоря, что у вас есть токен доступа @Sunny? 21.03.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..