Расширение Chrome: Facebook OAuth с токеном доступа, полученным вручную? - PullRequest
0 голосов
/ 05 декабря 2011

Как указано в документации Facebook Oauth , для использования потока на стороне клиента с настольным приложением требуется специальный return_uri https://www.facebook.com/connect/login_success.html.

Открытие новой вкладки изChrome к URL-адресу

https://www.facebook.com/dialog/oauth?client_id=MYAPPID&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=token

работает как положено, я перенаправлен на страницу login_success с параметром access_token, содержащим токен.Я могу запросить данные из Graph API с помощью простых запросов GET (например, с помощью jQuery):

$.getJSON("https://graph.facebook.com/me", {access_token : token}, function (d) 
   {
     .. process returned data
    });

У меня вопрос, могу ли я продолжать использовать Javascript SDK без , используя SDKметоды внутренней авторизации.

FB.getLoginStatus возвращает ошибку, что мой URI Connect / Canvas неверен.Как я должен проверить состояние токена без этого метода [кроме ручного получения и сопоставления ответов]?

FB.login, очевидно, завершается ошибкой со следующей ошибкой:

Ошибка APIКод: 191

Описание ошибки API: указанный URL-адрес не принадлежит приложению

Сообщение об ошибке: Неверный redirect_uri

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

Есть ли способ по-прежнему полагаться на Javascript SDK (особенно на события) при внешнем доступе к токену?Я должен переопределить токен доступа?

1 Ответ

1 голос
/ 12 января 2012

Да, вы можете использовать его для обычных событий (то есть кто-то нажал кнопку «Мне нравится»), например, так:

<div id="fb-root"></div>
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js#xfbml=1" id="facebook-jssdk"></script>
<script type="text/javascript">
    FB.Event.subscribe('edge.create',
        function(response) {
            console.log(response);
        }
    );
</script>

К сожалению, для обычных вызовов API вы не можете использовать Facebook JS SDK из своих расширений. Для этого вам придется свернуть свою собственную оболочку API.

Простой способ проверить, действителен ли токен доступа, - это вызвать API-интерфейс graph для / me? Fields = id с сохраненным токеном доступа. Это будет быстро, и вы можете использовать ответ, чтобы проверить, действителен ли токен доступа. Лучшая практика для расширений - запрашивать разрешение offline_access.

Кроме того, я бы порекомендовал, чтобы URI перенаправления находился в вашем домене. Таким образом, если другие расширения делают то же самое, ваши скрипты не будут мешать. Доступ к токену будет таким же.

...