Iphone facebook connect example вызывает сафари. Я не хочу использовать сафари. Как исправить эту проблему.
Iphone facebook connect example вызывает сафари. Я не хочу использовать сафари
Ответ 1
Я не уверен, что это кошерно, но я прокомментировал строки 131-145 в Facebook.m
, чтобы открыть open UIWebView
вместо открытия экрана входа в Safari. Кажется, все в порядке для меня...
Ответ 2
Предложение Donkim выше работало хорошо для меня, используя фиксацию 1/1/2011 SDK. Другой вариант - искать каждый вызов "authorizeWithFBAppAuth: safariAuth:" в Facebook.m. Вы можете изменить второй аргумент от YES до NO на строках 221, 267 и 274.
Ответ 3
Несмотря на то, что он открывает сафари и что уродливо, вы пользуетесь SSO, что является отличной возможностью. Если какое-либо другое приложение использует FBConnect, пользователь будет автоматически подключен к вашему. И если приложение facebook присутствует, его еще лучше, логин выполняется через приложение facebook и больше не находится в сафари.
Поэтому я предлагаю вам сохранить его таким образом!
Я согласен, что весь процесс должен быть немного улучшен и, по крайней мере, не открывать новую вкладку сафари при каждом подключении! Patience...
Ответ 4
Если у пользователя есть приложение для Facebook для iphone, он не откроет сафари. Он откроется непосредственно Facebook App
Ответ 5
Проблема со всеми этими решениями заключается в том, что вы теряете согласованный auth_token. Поэтому, если вам нужно выполнить ручные запросы на графы позже в своем коде, передав auth_token в URL-адресе, вы просто не можете.
Ответ 6
Установите safariAuth: NO on [self authorizeWithFBAppAuth: YES safariAuth: NO]; (Facebook.m: 221)
Ответ 7
Для тех, кто использует новый SDK Facebook iOS (не уверен, какая версия добавила его), вы можете использовать метод dialog:@"oauth" ...
(doc). Как говорили другие, вы отказываетесь от SSO, но для таких случаев, как моя (игра OpenGL), я считаю, что оверлей предпочтительнее переключиться на другое приложение.
Ответ 8
Файл: Facebook.m | Начинается с: строка # 220 authorizeWithFBAppAuth:safariAuth:
| Добавить boolean trySafariAuth = NO;
в строку # 223
/**
* A private function for opening the authorization dialog.
*/
- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth
safariAuth:(BOOL)trySafariAuth {
trySafariAuth = NO;
// more code allow blow this, but im too lazy to show it
// so please just change the boolean...
}
Ответ 9
Change following method as follows in facebook.m
- (void)authorize:(NSArray *)permissions
delegate:(id<FBSessionDelegate>)delegate {
[_permissions release];
_permissions = [permissions retain];
_sessionDelegate = delegate;
[self authorizeWithFBAppAuth:NO safariAuth:NO];
// [self authorizeWithFBAppAuth:NO safariAuth:YES];
}