FacebookSDK - Как вывести результаты из звонка в Facebook? - PullRequest
0 голосов
/ 15 ноября 2010

Я использую FacebookSDK (ASP.Net MVC Facebook Canvas Application) и просто пытаюсь вывести идентификатор видео из двух видео, загруженных на Facebook.Используя SDK, я успешно получил видео, и в нем говорится, что у него есть два видео, но я не уверен, как написать код для захвата и вывода идентификаторов видео?

My Действие выглядит так:


    FacebookApp app = new FacebookApp();<br />
    dynamic parameters = new ExpandoObject();<br />
    parameters.fields = "id,videos";<br />
    dynamic result = app.Api("me", parameters);<br />
    return View(result);

Когда я перебираю код в ASP.Net и нащупываю результат после вызова app.API, он говорит, что у меня есть объект Facebook.JsonObject с двумя элементами в нем.Один из них - мой идентификатор пользователя Facebook, другой - другой Facebook.JsonObject с двумя видео внутри.Поэтому я пришел к выводу, что он возвращает идентификатор пользователя и видео, связанные с этим пользователем.Это имеет смысл, но каков наилучший подход при выводе этих типов структур?

Мой Вид выглядит следующим образом:

    <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<code><dynamic></code>" %></p>

<code><% foreach (var video in Model) { %>
    <object width="352" height="221" >
        <param name="allowfullscreen" value="true" />
        <param name="allowscriptaccess" value="always" />
        <param name="movie" value="http://www.facebook.com/v/<%: video.id %>" />
        <embed src="http://www.facebook.com/v/<%: video.id %>" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="352" height="221"></embed>
    </object>
<% } %>
</code>

Выше Вид не работает с ошибкой, сообщающей, что он не может найти video.id.Я предполагаю, что мне нужно лучше понимать динамические типы данных и то, как работает Facebook.JsonObject.

Любой, кто имеет опыт использования FacebookSDK и может помочь мне извлечь идентификатор видео из моих видео на Facebook, я был бы очень радпризнателен.

Нужно ли мне создавать отдельный класс ViewModel, который имеет идентификатор пользователя и тип списка, который содержит видео ??

Приветствия Роб

Ответы [ 2 ]

0 голосов
/ 16 ноября 2010

Вот правильный способ сделать это после некоторого исследования, которое я провел вчера вечером:

Действие должно выглядеть следующим образом:


    FacebookApp app = new FacebookApp();<br />
    dynamic parameters = new ExpandoObject();<br />
    parameters.fields = "id,name";<br />
    dynamic result = app.Api("me/videos/uploaded", parameters);<br />
    return View(result);

Вид должен выглядеть следующим образом:

    <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<code><dynamic></code>" %></p>

<code><% foreach (var video in Model.data) { %>
    <object width="352" height="221" >
        <param name="allowfullscreen" value="true" />
        <param name="allowscriptaccess" value="always" />
        <param name="movie" value="http://www.facebook.com/v/<%: video.id %>" />
        <embed src="http://www.facebook.com/v/<%: video.id %>" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="352" height="221"></embed>
    </object>
<% } %>
</code>

Проблема была в два раза:

1) Мой путь URI был неверным,так должно быть:

динамический результат = app.Api ("me / videos / uploaded", параметры);

2) Когда я сказал, что возвращаю видео на самом деле, я получал только идентификатор пользователя и пустой набор данных для видео.Так что на самом деле все сводилось к тому, что мой URI был неверным.

3) При выводе результатов я должен был установить указатель на начало:

Model.data, а не сама модель..

@ MrKow спасибо за ваш отзыв и помощь в решении этой проблемы. Ссылка, которую вы предоставили, неоценима.Я пометил книгу для дальнейшего использования: -)

Cheers Rob

0 голосов
/ 15 ноября 2010

С этим кодом он должен работать, но у вас не будет своего идентификатора пользователя.

FacebookApp app = new FacebookApp();

dynamic result = app.Api("me/videos");

return View(result.data);

Если вы действительно этого хотите, вы можете создать объект ViewModel для хранения идентификатора пользователя и видео.

public class VideosViewModel{

   public dynamic userId {get;set;}

   public dynamic videos {get;set;}

}

Код в вашем действии:

FacebookApp app = new FacebookApp();

var VideosViewModel vvm = new VideosViewModel();

dynamic result = app.Api("me/videos"); 

vvm.videos = result.data;

dynamic parameters = new ExpandoObject(); 

parameters.fields = "id"; 

dynamic result = app.Api("me", parameters); 

vvm.userId = app.Api("me");

return View(vvm);

По вашему мнению, используйте Model.videos

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>


<% foreach (var video in Model.videos) { %>
    <object width="352" height="221" >
        <param name="allowfullscreen" value="true" />
        <param name="allowscriptaccess" value="always" />
        <param name="movie" value="http://www.facebook.com/v/<%: video.id %>" />
        <embed src="http://www.facebook.com/v/<%: video.id %>" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="352" height="221"></embed>
    </object>
<% } %>

Вы также можете найти интересный пример здесь:

http://www.facebook.com/notes/nathan-totten/dynamic-objects-and-the-facebook-c-sdk/158611014180033

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