Как мне закодировать или декодировать мой URL-адрес при перенаправлении обратно на мой сайт с Facebook, как только мы FbConnect - PullRequest
0 голосов
/ 10 февраля 2012

я пытался решить эту проблему, я уже спрашивал здесь, но не получил никакого ответа, я гуглил свою проблему во всех смыслах, но я просто не могу ее решить.Мне просто нужно знать, как я могу получить действительный URL-адрес при отправке в FaceBook своего URL-адреса. Я хочу, чтобы FaceBook перенаправил моего пользователя обратно: site_url(‘main/verification’) (я работаю с codeIgniter)

, поэтому мой loginUrl выглядит такэто:

https://www.facebook.com/dialog/oauth?client_id=248650435198175.&.redirect_uri=http%.3A%.2F%.2Flocalhost%.2FSocialCart%.2Findex.php%.3F%.2Fmain%.2Fverification&state=004dc1ebe9e081b2222408434af7dbd5&scope=email

(УДАЛИТЬ ВСЕ ТОЧКИ ПОСЛЕ ВСЕХ%)

Как только я нажимаю на ссылку, я перенаправляюсь в FaceBook, но затем я перенаправляюсь на свою главнуюстраница (а не главная / проверка) с этим URL в моем браузере:

http://localhost/SocialCart/index.php?%.2.Fmain%.2.Fverification&state=0e3ae6ca3e7869f618d65ad&code=AQCwwZUevy-SfeNLgUC55Rg0bi7noi_oczwt_2TmR-DobC8xc6STYIW82VLi23fzf9d-J5tdufdOLpc#_=_

Хорошо, я удалил часть этого длинного кода, но вы видите, что я получаю, после моих index.php?%.2.F вместо /, а & должно быть?(Я думаю)

(убрать точки '.' Между каждыми% 2 и 2F)

Как можно это исправить, пожалуйста?ПОЧЕМУ мой redirectUrl только частично декодируется моим браузером?кажется, что он декодируется до index.php, а затем перестает заменять все «% .2F» на «/» (еще раз без смысла после%). Думаю, мне понадобятся функции перезаписи url или urlencode ()но дело в том, что хорошо интерпретируется только половина URL, а не все остальные.Я действительно сейчас не знаю, что делать ..

Наверное, мне нужно проверить функцию getLoginUrl (), которая отвечает за получение части URL-адреса входа, который перенаправляет пользователя сfb на мой веб-сайт, если URL-адрес хорошо закодирован, но я попробовал все, и, похоже, ничего не работает.

Вот функция (которую вы можете найти в любом base_facebook.php графа API php.):

  /**
   * Get a Login URL for use with redirects. By default, full page redirect is
   * assumed. If you are using the generated URL with a window.open() call in
   * JavaScript, you can pass in display=popup as part of the $params.
   *
   * The parameters:
   * - redirect_uri: the url to go to after a successful login
   * - scope: comma separated list of requested extended perms
   *
   * @param array $params Provide custom parameters
   * @return string The URL for the login flow
   */
  public function getLoginUrl($params=array()) {
    $this->establishCSRFTokenState();
    $currentUrl = $this->getCurrentUrl();

    // if 'scope' is passed as an array, convert to comma separated list
    $scopeParams = isset($params['scope']) ? $params['scope'] : null;
    if ($scopeParams && is_array($scopeParams)) {
      $params['scope'] = implode(',', $scopeParams);
    }

    return $this->getUrl(
      'www',
      'dialog/oauth',
      array_merge(array(
                    'client_id' => $this->getAppId(),
                    'redirect_uri' => site_url(), // possibly overwritten
                    'state' => $this->state),
                  $params));
  }

Спасибо

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

Не вносите никаких изменений в base_facebook.php Используйте следующий код:

$params = array(
  'scope' => 'read_stream, friends_likes',
  'redirect_uri' => site_url(‘main/verification’)
);

$loginUrl = $facebook->getLoginUrl($params);
0 голосов
/ 10 февраля 2012

Ваш логин URL-адрес:

https://www.facebook.com/dialog/oauth?client_id=248650435198175.&.redirect_uri=http%.3A%.2F%.2Flocalhost%.2FSocialCart%.2Findex.php%.3F%.2Fmain%.2Fverification&state=004dc1ebe9e081b2222408434af7dbd5&scope=email

URI перенаправления

http%.3A%.2F%.2Flocalhost%.2FSocialCart%.2Findex.php%.3F%.2Fmain%.2Fverification

URL-адрес, декодированный redirect_uri:

http://localhost/SocialCart/index.php?/main/verification

У вас есть %3F в redirect_uri

...