stenking wrote:Интеррапт wrote:stenking wrote:
Чаво? Вот $user = $facebook->getUser() : это uid пользователя если он залогинен к фейскбуку.
Т.е.
Вот полный код:
Нифига это не полный код. Это проканает только, если юзер уже залогинен в фейсбук. А если не залогинен? То придется логинить его. Т.е. полный код выглядит как что-то вроде:
https://developers.facebook.com/blog/post/534/
а уж никак не одна строчка, как ты изначально пытался схитрить
Ты чаво Интерраптик, решил отмазыватся?:) Покажи мне аналог в своей библиотке. Конечно если юсер не залогинен то нужно показать ему линк на который он кликнет и попросить всяких permissions. Кстати, между прочим о самих линках тоже думать не нужно: $facebook->getLoginUrl( array("permissions" => "email", "post" ) ) - но это всё фронтенд.
Вот именно, что фронденд
А что мне показывать? У меня обычно все шустро. На Android или iOS телефоне в моем native app вылазить Facebook-овский Single Sign On (т.е. родная программа, или если ее нет, браузерное окно). Это буквально пару строчек кода. Получаю я в результате этих процедур user id и token и передаю на свой серверок. Где так же само буквально пару строк. Например, чтобы проверить, что user передал мне с телефона корректный token и тут же ес-но я могу запросить любую информацию (ну ес-но, которую юзер разрешил посмотреть):
Code: Select all
private static void validateFacebookAccessToken(String userId, String accessToken) {
final FacebookClient fbClient = new DefaultFacebookClient(accessToken);
try {
final User user = fbClient.fetchObject("me", User.class);
if (user == null || !user.getId().equals(userId)) {
throw SignInFailedServiceException.errorInvalidFacebookAccessToken();
}
}
catch (FacebookOAuthException ex) {
throw SignInFailedServiceException.errorInvalidFacebookAccessToken();
}
catch (FacebookException ex) {
throw ExternalServiceException.errorFacebookReturnedError(ex.getMessage());
}
}
ну а если без телефонного клиента, то могу то же самое сделать на фронт-энде, так же само юзер будет по ссылочке кликать.
И даже если иной на пару строчек кода больше, то no big deal. Зато все нормально структуированно с самого начала, ошибочки обрабатываются грамотно, серверочек попроизводительней чем PHPшный будет.