Подтвердить что ты не робот

Первое диалоговое окно после проверки подлинности немедленно завершается и закрывает диалог

Я использую последнюю версию SDK для Facebook на iOS 5. Я могу использовать SSO для успешной аутентификации пользователя, а затем я попытаюсь разделить ссылку следующим образом:

NSString *appId = [[[NSBundle mainBundle] infoDictionary] 
                                          objectForKey:TSFacebookAppID];

NSMutableDictionary* params = 
[NSMutableDictionary dictionaryWithObjectsAndKeys:
                          appId,                @"app_id",
                          [url absoluteString], @"link
                          title,                @"caption",
                          body,                 @"description",
                          nil];

[facebook dialog:@"feed" andParams:params andDelegate:self];

В первый раз, когда я пытаюсь это сделать, появится диалоговое окно и немедленно закрывается, вызывая диалог: didFailWithError: метод делегирования ошибок. Ошибка:

Ошибка домена = NSURLErrorDomain Code = -999 "Операция не может быть выполнена. (NSURLErrorDomain error -999.)" UserInfo = 0x98f2ab0 {NSErrorFailingURLKey = https://m.facebook.com/dialog/feed? ссылка = HTTP% 3A% 2F% 2Fwww.thescore.com% 2Fhome% 2Farticles% 2F184248 & описание = Надаль %20pulls %20out %20of %20Paris %20to %20focus %20on %20ATP %20finals & access_token = BAABw00HZB06cBALT57lZCM24N4EOtPpOQeCgl7oLUvbHFR0ZAlwgAbPHQ7HANmlBE0aUKVNDmWNYsEqB0wXq28vm4D18T5hLTVDK3x2WjnVjgIVl75RPoOszSB21f4ZD & заголовок = Арти % %20% %20ScoreMobile %20for %20iPhone & app_id = 124052647629735 & redirect_uri = fbconnect% 3A% 2F% 2Fsuccess & sdk = 2 & display = touch, NSErrorFailingURLStringKey = HTTPS://m.facebook.com/диалог/корма ссылки = HTTP% 3A% 2F% 2Fwww.thescore.com% 2Fhome% 2Farticles% 2F184248 &? описание = Надаль %20pulls %20out %20of %20Paris %20to %20focus %20on %20ATP %20finals & access_token = BAABw00HZB06cBALT57lZCM24N4EOtPpOQeCgl7oLUvbHFR0ZAlwgAbPHQ7HANmlBE0aUKVNDmWNYsEqB0wXq28vm4D18T5hLTVDK3x2WjnVjgIVl75RPoOszSB21f4ZD & Амп; заголовок = Статья %20from %20ScoreMobile %20for %20iPhone & APP_ID = 124052647629735 & redirect_uri = fbconnect% 3A% 2F% 2Fsuccess & SDK = 2 & дисплей = сенсорный}

Однако последующие попытки совместного использования ссылки работают нормально.

4b9b3361

Ответ 1

Это исправлено с SDK 3.0, поэтому я собираюсь закрыть этот вопрос. Решение: обновите SDK до 3.0.

Ответ 2

Просто обновление для всех, наконец, назначено кому-то на Facebook: https://developers.facebook.com/bugs/168127053284477 - надеюсь, скоро оно будет исправлено.

Между тем, кто-то отправил запрос на github с исправлением: https://github.com/facebook/facebook-ios-sdk/pull/436

Надеюсь, что это поможет кому-то, поскольку я все еще сталкивался с такой же ошибкой.

Ответ 3

Я также иногда получал этот -999 NSURLDomainError при попытке открыть окно почты facebook. Я принял стратегию игнорирования кода ошибки, как отмечает старший в комментариях.

Причина, по которой я так плохо отношусь к этому исправлению, заключается в том, что FBLoginDialog фактически игнорирует эту ошибку. Проверьте код в github:

https://github.com/facebook/facebook-ios-sdk/blob/master/src/FBLoginDialog.m#L85

Чтобы быть конкретным, вот как выглядит мой метод webView: didFailLoadWithError в FBDialog.m:

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
// 102 == WebKitErrorFrameLoadInterruptedByPolicyChange
NSLog(@"FBDialog webView didFailLoadWithError:%@ %d",error.domain,error.code);
if ([error.domain isEqualToString:@"NSURLErrorDomain"] && error.code == -999)
    return;

if ([error.domain isEqualToString:@"WebKitErrorDomain"] && error.code == 102)
    return;

[self dismissWithError:error animated:YES];
}

Ответ 4

В FBDialog.m измените это:

UIWindow* window = [UIApplication sharedApplication].keyWindow;
if (!window) {
    window = [[UIApplication sharedApplication].windows objectAtIndex:0];
}

Для этого:

UIWindow* window = [[UIApplication sharedApplication].windows objectAtIndex:0];

Проблема решена! Для меня, по крайней мере.

Ответ 5

До тех пор, пока facebook не установит свой SDK, я не нашел лучшего решения, кроме этого:

- (void)dialog:(FBDialog *)dialog didFailWithError:(NSError *)error{

    if([error code] == -999){
        DLog(@"Error -999 found re-open webview");

        [facebook dialog:@"apprequests"
               andParams:_dialogParams
             andDelegate:self];

    }else{
        DLog(@"Error opening facebook dialog : %@", [error description]);
    }
}

Ответ 6

Я проследил его, насколько мне кажется, я могу в диалоге .m, который является строкой 414 - dialog.m отправляет URLRequest для диалога в веб-представление, но веб-представление, по-видимому, получает ошибку обратно от сервера Facebook.

Я попытался позвонить в свой код [facebook dialog: @ "feed"...] после 10 секундной задержки после аутентификации, без кости - та же ошибка.

Итак, только для усмешек я назвал код своего корма из -dialog: didFailWithError... после проверки, была ли ошибка -999. Он отлично справляется с этим вызовом.????