URL перенаправления на холст Facebook - PullRequest
0 голосов
/ 20 октября 2010

Мы уже давно используем библиотеку java-facebook (несколько лет), хотя, похоже, одной из причин, по которой мы не получаем новых пользователей через FB, является то, что новые пользователи видят ошибку, которая Я понимаю, что из-за новой (в июне) безопасности FB.

В настоящее время у нас есть «простое» приложение Canvas FB, использующее FBML, к которому пользователи могут получить доступ через:

http://apps.facebook.com/$MYAPP

URL-адрес холста возвращается:

http://www.facebook.com/connect/uiserver.php?app_id=$APPID&next=http%3A%2F%2Fapps.facebook.com%2F$MYAPP&display=page&locale=en_US&return_session=0&fbconnect=0&canvas=1&legacy_return=1&method=permissions.request

Этот URL для новых пользователей (которые ранее не авторизировали наше приложение) возвращается с:

API Error Code: 100
API Error Description: Invalid parameter
Error Message: next is not owned by the application.

Существующие пользователи (которые включили приложение до июня) могут получить к нему доступ без проблем.

URL нашего сайта указан как:

http://apps.facebook.com/$MYAPP

Эта ошибка означает, что URL-адрес сайта и следующий URL-адрес должны быть в одном домене, а не в facebook.

Мне удалось изменить URL-адрес сайта на:

http://www.OURREALAPP.com/

И, домен должен быть:

OURREALAPP.com

А затем смог изменить URL-адрес Canvas для возврата:

https://graph.facebook.com/oauth/authorize?client_id=$CLIENT_ID&redirect_uri=http%3A%2F%2Fwww.OURREALAPP.com%2F$URL%2F

Это прекрасно работает, в первый раз. Он запрашивает разрешение и отображает правильные данные. Однако, если мы обращаемся к нему во второй раз, он не отображается в «рамке Facebook», т. Е. Отправляет пользователя непосредственно в приложение.

Я также пытался изменить redirect_uri для перехода на apps.facebook.com/$MYAPP ... но это дает нам ошибку об отсутствии владельца URL.

Что нам нужно сделать? Есть идеи?

Спасибо!

1 Ответ

0 голосов
/ 21 октября 2011

Это довольно бесполезно год спустя, но здесь (для приложения iFrame Canvas):

Чтобы авторизовать новых пользователей (используя SDK на стороне клиента), вы можете сделать одну из двух вещей:

  1. Перенаправьте их на URL-адрес, который затем перенаправит их на URL-адрес по вашему выбору.
  2. Запросите их с помощью всплывающего диалога с использованием JS SDK (но только послеони что-то щелкают)

Пользователи, которые уже авторизовали ваше приложение, вероятно, не должны делать это тоже.

Вот последние документы по аутентификации: https://developers.facebook.com/docs/beta/authentication/

Вот некоторый код, который использует JS SDK и переадресацию для обработки разрешений:

<script>

    var fb_perms = "email,publish_actions"
    var fb_url = "http://apps.facebook.com/awesome/"

    FB.init({
        appId      : app_id, // App ID
        status     : true, // check login status
        cookie     : true, // enable cookies to allow the server to access the session
        oauth      : true, // enable OAuth 2.0
        xfbml      : true  // parse XFBML
    });

    // login to facebook
    FB.getLoginStatus(function(response) {
        if (response.authResponse) return alert("user is logged in!")
        var url = "https://www.facebook.com/dialog/oauth?" +
            "client_id=" + app_id + "&" +
            "redirect_uri=" + fb_url + "&" +
            "scope=" + fb_perms + "&" +
            "response_type=token"
        top.location.href = url             
    })
</script>

Best,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...