#iphone #authentication #twitter #crash #titanium
#iPhone #аутентификация #Twitter #сбой #titanium
Вопрос:
Моя часть Twitter в моем приложении внезапно больше не работает. Когда я хочу аутентифицировать приложение, происходит сбой. Я быстро просматриваю всплывающее окно для входа в систему (с новым макетом), и оно вылетает со следующими ошибками:
Вчера все работало нормально, так что, я думаю, проблема в новом макете окна авторизации или около того? Я действительно не могу найти что-то в выходных данных, в чем была проблема, кроме того, что это выдает ошибки в HTML-файлах.
Кто-нибудь может мне помочь? Или у кого-нибудь такая же проблема, и подтвердите, что я не единственный?
Я использую Titanium SDK 1.6.2 и iPhone SDK 4.2.
Спасибо!
Комментарии:
1. Теперь проблема решена, окно аутентификации вернулось к старому. Кто-нибудь может объяснить такое поведение? Это довольно раздражает, если это повторится, если приложение будет опубликовано. У меня был совершенно другой всплывающий экран для авторизации вашей учетной записи в приложении с помощью Twitter. Через час он снова сменился на обычный.
2. Вы пробовали поспрашивать в службе поддержки Twitter, они контролируют все это.
Ответ №1:
Если вы используете MGTwitterEngine, перейдите в SA_OAuthTwitterController.m. И измените это:
- (void) webViewDidFinishLoad: (UIWebView *) webView {
NSError *error;
NSString *path = [[NSBundle mainBundle] pathForResource: @"jQueryInject" ofType: @"txt"];
NSString *dataSource = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:amp;error];
if (dataSource == nil) {
//YFLog(@"An error occured while processing the jQueryInject file");
}
//DLog(@"%@", [_webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].innerHTML"]);
[_webView stringByEvaluatingJavaScriptFromString:dataSource]; //This line injects the jQuery to make it look better
//check for auth_pin element
NSString *authPin = [[_webView stringByEvaluatingJavaScriptFromString: @"document.getElementById('oauth_pin').innerHTML"] stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
authPin = [[_webView stringByEvaluatingJavaScriptFromString: @"document.getElementById('oauth_pin').getElementsByTagName('kbd')[0].getElementsByTagName('code')[0].innerHTML"] stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
if (authPin.length == 0)
authPin = [[_webView stringByEvaluatingJavaScriptFromString: @"document.getElementById('oauth_pin').getElementsByTagName('a')[0].innerHTML"] stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
//if the auth pin not found than check for the auth-pin elenent
if (authPin == nil || authPin.length == 0) {
authPin = [[_webView stringByEvaluatingJavaScriptFromString: @"document.getElementById('oauth-pin').innerHTML"] stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
if (authPin.length == 0) {
authPin = [[_webView stringByEvaluatingJavaScriptFromString: @"document.getElementById('oauth-pin').getElementsByTagName('a')[0].innerHTML"] stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
}
[_activityIndicator stopAnimating];
if (authPin.length) {
[self gotPin: authPin];
}
if ([_webView isLoading] || authPin.length) {
[_webView setHidden:YES];
} else {
[_webView setHidden:NO];
}
}