#facebook #url #customization
#Facebook #url #настройка
Вопрос:
Я разрабатываю веб-сайт со следующим требованием:
- Пользователи могут приглашать своих друзей Facebook посетить веб-сайт
- Приглашенные друзья получают персонализированный URL, который указывает на веб-сайт (сообщение, уведомление, запрос … не имеет значения)
Пример потока:
1. Джон посещает http://www.mysite.com
2. Джон нажимает кнопку Facebook connect и входит в систему со своими учетными данными facebook
3. Джон нажимает кнопку «Пригласить друзей». Появится диалоговое окно выбора друга
4. Джон выбирает Мэри и отправляет приглашение / запрос / сообщение
5. Мэри получает ссылку типа: http://www.mysite.com?name=Mary
6. Мэри нажимает на ссылку из facebook и перенаправляется на указанный выше URL
7. На моем сайте отображается: «Привет, Мэри!», беря имя из параметра URL
Мне уже удалось выполнить шаги 1-4.
Я спрашиваю о шаге 5. Возможно ли это вообще? Я знаю, что могу получить facebook ID людей, выбранных в селекторе с несколькими друзьями, и что я могу выполнить запрос FBQL для получения имен выбранных людей, но как настроить отправляемый URL?
Приветствия,
Начо
Ответ №1:
Что ж, если пользователь будет отправлять приглашения большому количеству друзей, то эти приглашения не будут «уникальными для приглашенного» (как упоминал @Jimmy). Но вы все равно можете получить уникальный «идентификатор друга» и (я полагаю) имя из самого запроса!
Что вам нужно сделать, так это следующее:
- Когда друг нажимает на приглашение, он / она перенаправляется на страницу canvas (или страницу закладок, если она была sit).
- Вместе с перенаправлением вы получите номер приглашения (идентификатор запроса) Здесь вы можете прочитать этот запрос и извлечь из него поле «Кому», а затем перенаправить друга на ваш веб-сайт.
Что-то вроде:
<?php
if( isset($_REQUEST['request_ids']) ) {
// Requesting an application token
$APPLICATION_ID = "APP_D";
$APPLICATION_SECRET = "APP_SECRET";
$token_url = "https://graph.facebook.com/oauth/access_token?" .
"client_id=" . $APPLICATION_ID .
"amp;client_secret=" . $APPLICATION_SECRET .
"amp;grant_type=client_credentials";
$app_token = file_get_contents($token_url);
// You may have more than one request, so it's better to loop
$requests = explode(',',$_REQUEST['request_ids']);
foreach($requests as $request_id) {
// Get the request details using Graph API
$request_content = json_decode(file_get_contents("https://graph.facebook.com/$request_id?$app_token"), TRUE);
// An example of how to get info from the previous call
$to_name = $request_content['to']['name'];
// When all is done, delete the requests because Facebook will not do it for you!
$deleted = file_get_contents("https://graph.facebook.com/$request_id?$app_tokenamp;method=delete"); // Should return true on success
echo "<script>top.location.href='http://www.mysite.com?name=" . urlencode($to_name) . "'</script>";
}
}
?>
Для получения дополнительной информации прочитайте следующее:
Ответ №2:
Когда упомянутый пользователь попадает на ваш сайт, вам необходимо либо узнать его идентификатор пользователя Facebook, либо всю информацию, которую вы планируете им показать. Использовать идентификатор пользователя будет проще и доступнее, и для его получения вам нужно будет заставить этого пользователя установить ваше приложение, прежде чем вы сможете идентифицировать его, посмотреть его имя и сказать «Привет, Мэри!»
Что бы я хотел сделать здесь, так это позволить ссылающемуся пользователю поделиться ссылкой, настроенной для него. Итак, если я A, и я делюсь со своими друзьями, моя ссылка будет выглядеть как http://www.somedomain.com/?ref=A
. Я делюсь этим, мой друг B нажимает на ссылку. Когда B попадает на экран установки, он устанавливает, и теперь мы знаем имя B, и, поскольку у нас есть ref
параметр, мы знаем, что он нажал на мою ссылку. (Именно так Groupon и Dropbox обрабатывают реферальные ссылки.)
И чтобы ответить на ваш вопрос более четко, нет, ссылки на приглашения должны быть одинаковыми для каждого приглашения, которое вы отправляете с помощью селектора для нескольких друзей, поэтому ссылки для каждого приглашенного не являются вариантом.