Как использовать аутентификацию Facebook OAuth 2.0, такую ​​как Zynga и другие? - PullRequest
1 голос
/ 15 октября 2010

Я хочу отобразить поле «Запрос на разрешение» непосредственно, когда пользователь вводит http://apps.facebook.com/myfancyapp. Документация Аутентификация Facebook довольно ясно показывает, как должен выглядеть URL

https://graph.facebook.com/oauth/authorize?client_id=[APPID]&redirect_uri=http://www.myfancyapp.com/&scope=user_photos,user_videos,publish_stream

Вставка этого URL прямо в браузер работает как надо.Я хочу перенаправить пользователя через JavaScript (или что-то еще) с URL-адреса приложения

http://apps.facebook.com/myfancyapp

на URL-адрес окна аутентификации выше.

Я думал, что-то вроде этого будет работать:

   <script type="text/javascript">
   <!--
      window.location = "https://graph.facebook.com/oauth/authorize?client_id=[APPID]&redirect_uri=http://www.myfancyapp.com/&scope=user_photos,user_videos,publish_stream"
   //-->
   </script>

Это перенаправляет меня на страницу с телом, которое выглядит следующим образом

Facebook

Нажатие на изображение / тест затем перенаправляет в окно аутентификации.

Как я могу напрямую перенаправить в поле «Запрос на разрешение».Я знаю, что это работает как-то так, как это делают другие разработчики (например, Zynga).

Ответы [ 2 ]

3 голосов
/ 27 октября 2010

Я делаю то же самое, что и asker, только вместо window.location, использую top.location.href = "https://graph. ...."

Как:

<script type="text/javascript">
top.location.href = "https://graph.facebook.com/oauth/authorize?client_id=[APPID]&scope=email&redirect_uri=http://apps.facebook.com/myfancyapp/";
</script>

Запрашивает логин, если необходимо, и затем разрешения.Затем перенаправляет в приложение.

1 голос
/ 15 октября 2010

Делать это с помощью PHP очень просто.

На бэкэнде

$facebook = new Facebook( array(
    'appId'  => '<FB_APP_ID>'
  , 'secret' => '<FB_APP_SECRET>'
  , 'cookie' => true
));

$fbSession = $facebook->getSession();
if ( !$fbSession )
{
  $url = $facebook->getLoginUrl( array(
      'canvas'     => 1
    , 'fbconnect'  => 0
    , 'display'    => 'page'
    , 'cancel_url' => null
    , 'req_perms'  => 'user_photos,user_videos,publish_stream'
  ) );
}

А потом, на фронте

<script type="text/javascript">
  top.location.href = '<?php echo $url; ?>';
</script>
<p>
Not being redirected? <a href="<?php echo $url; ?>" target="_top">Click Here.</a>
</p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...