【问题标题】:How to post to user's wall on Facebook from a Silverlight app running inside Facebook in an iFrame?如何从 iFrame 中 Facebook 内运行的 Silverlight 应用程序在 Facebook 上发布到用户的墙上?
【发布时间】:2011-03-23 21:33:31
【问题描述】:

我设置了一个 Facebook 应用程序,该应用程序在 iFrame 中运行。该 iFrame 仅包含一个包装 Silverlight 应用程序的 index.html。

一切运行良好,但我现在希望能够从 Silverlight 应用程序内部发布到用户的墙上。在我看来,我可能有两种方法可以做到这一点:

  1. 使用 Silverlight Facebook SDK 生成子浏览器页面,进行身份验证,检索令牌,然后发布到墙上
  2. 在我的包装器 index.html 中放入一些东西,将必要的应用令牌传递给我的 Silverlight 控件,然后从该控件回调(到 Javascript?)以进行发布

第二个看起来更有吸引力,但第一个是我唯一知道怎么做的。有人在这里有更好的经验/想法吗?

克里斯

【问题讨论】:

    标签: silverlight facebook facebook-c#-sdk


    【解决方案1】:

    你可以在你的页面中做这样的事情:

    <script>
    FB.getLoginStatus(function(response) {
      if (response.session) {
         // Substitute with the proper stuff in your silverlight app
         mySilverlightFBApp.setFBSessionStuff(
              response.session.access_token,
              response.session.expires,
              response.session.uid
         );
      } 
    });
    </script>
    

    会话对象中还有其他字段(但不确定您是否要这样做)。顺便说一句,getLoginStatus 函数不会让用户登录,它只会检查他们的状态。由于他们(可能)正在使用您的应用程序并且(也可能)允许该应用程序,因此这应该可以正常工作。 (您确实需要让他们登录并允许该应用程序..您可能需要请求权限..在这种情况下您希望将其发布到他们的提要)。您的索引页面还需要包含 FB Javascript(并正确设置)。

    在此处查看 FB 文档以获取更多信息:http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

    【讨论】:

      【解决方案2】:

      也许: 3) 使用 facebook javascript SDK 让用户自己发布流故事?如果您已经完成了 fb.init 函数等所有设置,那么只需调用(类似的)this(如果需要,底部的部分用于跟踪帖子):

      FB.ui(
              {
      
                  display:'iframe',
                  method: 'stream.publish',
                  caption: 'blah',
                  description: 'hey there. wow.,
                  name: 'yo',
                  link: 'http://foo.com',
                  picture: 'http://image.com/blah.gif',
                  action_links: [
                              {
                              text: 'Try for free',
                              href: 'http://foo.com'
                              }],
      
      
      
              },
                  function (response) {
                      if (response && response.post_id) {
                      var URL = '/pages/ajax_InsertUserFacebookPost.aspx?';
                      URL += 'facebookpostid=' + response.post_id;
                      //alert(URL);
                      $.ajax({
                              type: "GET",
                              url: URL,
                              data: "{}",
                              contentType: "application/json; charset=utf-8",
                              dataType: "json",
                              async: true
                          });
      
      
                      } else {
                          //alert('Post was not published.');
                      }
                  }
                  );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多