Facebook Graph API - типы авторизации? - PullRequest
4 голосов
/ 15 мая 2010

Я борюсь с новым API Graph Facebook, возможно, кто-то здесь может помочь.

Вот что я хочу сделать: предоставить кнопку 'login w / FB', добавить / авторизовать, получить код, / access_token, получить access_token и нажать https://graph.facebook.com/me для информации о пользователе.

Когда я пытаюсь использовать type = client_cred в вызове / authorize, я получаю access_token, который позволяет мне нажимать на URL с идентификаторами пользователей или именами, но не / me. Я получаю сообщение о том, что мне нужен действительный токен.

Если я не могу нажать / me, как мне определить, кто является текущим пользователем?

Что именно я должен использовать в параметре типа, если я хочу, чтобы веб-сайт имел доступ к данным пользователей? Я видел сообщения с type = web_server и т. Д., Но я не могу найти надежный способ сделать это, как мне кажется, довольно просто ...

Заранее спасибо за любую помощь, оказанную ...

Ответы [ 5 ]

5 голосов
/ 15 мая 2010

Когда я пытаюсь использовать type = client_cred в вызове / authorize, я получаю access_token, который позволяет мне нажимать на URL с идентификаторами пользователей или именами, но не / me. Я получаю сообщение об ошибке, в котором говорится, что мне нужен действительный токен.

client_cred предназначено для вашего приложения, чтобы проверить, действительно ли это приложение. Он используется для таких вещей, как подписка на API обновления Facebook в реальном времени. Он передает нет аутентификации пользователя.

Вы должны следовать инструкциям Facebook OAuth . Он никоим образом не использует параметр type. Вы будете:

  • Отправка пользователя на https://graph.facebook.com/oauth/authorize с установленным URL обратного вызова.
  • Если пользователь говорит «ОК», они будут перенаправлены на ваш URL-адрес обратного вызова со строкой подтверждения в качестве параметра URL.
  • Вы берете эту строку подтверждения и запрашиваете токен доступа у https://graph.facebook.com/oauth/access_token

Этот токен доступа позволяет вам работать как пользователь и получать доступ к me URL.

4 голосов
/ 28 ноября 2011

У меня была такая же проблема, и я решил ее.

Первое: Не использовать & type = client_cred .

Второе: везде используйте один и тот же URL-адрес !!!

Мой пример:

Моя первая ссылка:

<a href="https://www.facebook.com/dialog/oauth?client_id=_MY_APP_ID_&state=_RANDOM_NUMBER_&redirect_uri=http://mysite.ru/ru/site_users.html?op=fbreg">FB login</a>  

Когда я получил код:

$nexturl  = "https://graph.facebook.com/oauth/access_token?client_id=".$AppId."&redirect_uri=http://mysite.ru/ru/site_users.html?op=fbreg&client_secret=".$AppSec."&code=".$fbCode;
$response = @file_get_contents($nexturl);   
$params   = null;
parse_str($response, $params);
$graph_url = "https://graph.facebook.com/me?access_token=".$params['access_token'];
$arrResponse = json_decode(@file_get_contents($graph_url));

В $ arrResponse я получил всю информацию о текущем пользователе.

Значение URL должно быть везде одинаковым . В коде и в https://developers.facebook.com/apps/.

В моем случае это так: http://mysite.ru/ru/site_users.html?op=fbreg

Следующие данные неверны в моем примере.

Вот и все. Очень глупая проблема. Я решил это за три дня: (

1 голос
/ 15 мая 2010

Я думаю, что это должно быть примерно так:

https://graph.facebook.com/oauth/authorize?client_id=...&redirect_uri=...&scope=user_photos,user_videos,publish_stream&display=page

В области должны быть указаны необходимые вам разрешения, перечисленные здесь http://developers.facebook.com/docs/authentication/permissions

Отображаемые значения можно найти здесь http://developers.facebook.com/docs/authentication/

0 голосов
/ 24 августа 2011

Этот ответ должен уточнить последний комментарий nategood

фига. разобрался в моей проблеме. убедитесь, что redirect_uri идентичен при вызовах authroize и access_token! - 24 марта в 0: 54

Я долго боролся с этой проблемой. Документация в Facebook плохая, и ответы на этих сайтах, похоже, попадают в одну из двух категорий: используйте type = client_cred или не используйте тип.

Не используйте "type = client_cred". Следуйте документации Facebook и просто убедитесь, что redirect_uri, который вы используете в своем коде, запрашивает:
http://www.facebook.com/dialog/oauth/?

совпадает с redirect_uri, который вы используете в своем запросе access_token для: *https://graph.facebook.com/oauth/access_token?*

0 голосов
/ 07 июня 2010

вы это решаете? У меня такая же ошибка как у васЯ нахожу страницу, которая объясняет эту проблему http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/

, если использовать type = client_cred, вам нужно изменить «me» на идентификатор пользователя, а идентификатор пользователя можно найти в параметре «code», просто посмотритеairtle:)

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