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

Iphone facebook connect example вызывает сафари. Я не хочу использовать сафари

Iphone facebook connect example вызывает сафари. Я не хочу использовать сафари. Как исправить эту проблему.

4b9b3361

Ответ 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];
    }