2014-01-11 6 views
3

Я пытаюсь заставить свою мобильную игру приглашать друзей из Facebook, но я не могу. Я использую Facebook C# SDK для Windows 8 (надеюсь, перенос, когда готов WP8, Android и IOS), но проблема я запутался о facebook API: параметры приДоступен ли пользователь facebook с помощью W8/WP8 C# sdk?

Это мой код:

var fb = new FacebookClient (accessToken); 
dynamic parameters = new ExpandoObject(); 
parameters.appId = facebookAppId; 
parameters.message = "This is a test!"; 
parameters.to="friendID1,friendID2,..."; 

string request=String.Format ("/me/apprequests"); 
dynamic result = await fb.PostTaskAsync (request, parameters); 

Когда я использую этот код, задача «Задание» выполняется правильно, но (проверка переменной результата и просмотр в facebook) на «я» пользователь получает это приглашение. Поле «to», по-видимому, игнорируется, и «я» является единственным, кто получает запрос.

Если я использую

string request=String.Format ("/{0}/apprequests",FRIEND_ID); 

вместо/я/apprequests, то я получаю следующее сообщение об ошибке:

OAuthException "(# 2) Не удалось создать какой-либо запрос приложения",

Я прочитал в некоторых местах, что токен доступа должен быть токеном приложения, но в документации говорится, что его следует использовать только тогда, когда ваш сервер выполняет эти запросы. Что я хочу - это запрос пользователя к пользователю, а не приложение запрос пользователя.

До сих пор я видел, как можно получить его в Android и iOS через запрос Dialog, но я не нашел их в SDK C#, поэтому я пытаюсь сделать apprequest вручную, без везения.

Возможно ли, что это работает с Windows Phone 8 или Windows 8? Как?

Спасибо, Kak

ответ

2

Да, это возможно. К сожалению, вы не можете сделать это через SDK, поскольку Facebook не позволяет вам отправлять запросы программно. Это нужно сделать через окно запроса/всплывающего окна.

Таким образом, убедитесь, что пользователь выполнил вход в систему, прежде чем пытаться выполнить следующее решение. После того, как вы получите токен доступа к facebook с помощью метода LoginAsync, выполните следующие действия.

  1. Создайте элемент управления WebBrowser в своем xaml с включенным скриптом.

<phone:WebBrowser Visibility="Collapsed" IsScriptEnabled="True" Name="FbBrowser"></phone:WebBrowser>

  1. Теперь в вашем коде позади, создать строку с facebook идентификаторами пользователей, которых вы хотите пригласить в формате CSV, как "ID1, ID2, id3".

  2. управления веб-браузер на следующей странице и подписаться на событие навигационном: "https://m.facebook.com/dialog/apprequests?" + "message=your_message&app_id=" + "your_facebook_appid" + "&redirect_uri=https://m.facebook.com&to=" + user_facebook_ids_CSV + "&sdk=2&display=touch"

FbBrowser.Visibility = Visibility.Visible; FbBrowser.Navigating += FbBrowser_Navigating; FbBrowser.Navigate(url1);

  1. Вы можете обработать ответ успеха и неудачи веб-страницы в навигации мероприятие.

private void FbBrowser_Navigating(object sender, NavigatingEventArgs e) { if (e.Uri.ToString().StartsWith("https://m.facebook.com/?error_code") || e.Uri.ToString().StartsWith("https://m.facebook.com/?request")) { FbBrowser.Visibility = Visibility.Collapsed; FbBrowser.Navigate(new Uri("about:blank"));
} }

Смежные вопросы