【问题标题】:Get authentication request in Facebook page tab app在 Facebook 页面标签应用中获取身份验证请求
【发布时间】:2012-03-13 19:27:22
【问题描述】:

我想在 Facebook 中开发一个页面标签应用程序

到目前为止,我一直使用 asp.net 开发画布页面应用程序,所以这将是我的第一个页面标签应用程序

我一直在获取用户信息和好友列表的身份验证请求

我使用了由 computerbeacon 开发的 Facebook 图形工具包 dll,但它并没有解决我的页面标签问题

任何 c# 或 JavaScript 源代码都可以帮助我,我可以使用 jssdk 或 C#sdk,但我只想提供一个示例或链接,让我了解如何在页面标签应用程序中实现这一点


我把这段代码放到我的页面上,但它说 FB 没有定义 如果我这次将 connect.Facebook, all.js 放在 head 部分,它会说 fb.login 在 fb.init 之前调用,并且它不会以两种方式显示权限窗口

<body>
 <div id="fb-root"></div> 
  <script>
    window.fbAsyncInit = function () {
    FB.init({
        appId: '396868406993330', // App ID 

        status: true, // check login status 
        cookie: true, // enable cookies to allow the server to access the session 
        xfbml: true  // parse XFBML 
    });

    // Additional initialization code here 
};

// Load the SDK Asynchronously 
(function (d) {
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
    if (d.getElementById(id)) { return; }
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js, ref);
} (document)); 
 </script> 
<form id="form1" runat="server">
<div>
hello world


<script>
    FB.login(function (response) {
        if (response.authResponse) {
            console.log('Welcome!  Fetching your information.... ');
            FB.api('/me', function (response) {
                console.log('Good to see you, ' + response.name + '.');
            });
        } else {
            console.log('User cancelled login or did not fully authorize.');
        }
    }, { scope: 'email,user_likes' }); 

   </script>
    </div>
    </form>
     </body>

【问题讨论】:

    标签: c# facebook facebook-c#-sdk facebook-javascript-sdk


    【解决方案1】:

    您可以使用Facebook JavaScript SDK,即FB.login函数在前端请求权限。

    例子:

    FB.login(function(response) {
       if (response.authResponse) {
         console.log('Welcome!  Fetching your information.... ');
         FB.api('/me', function(response) {
           console.log('Good to see you, ' + response.name + '.');
         });
       } else {
         console.log('User cancelled login or did not fully authorize.');
       }
     }, {scope: 'email,user_likes'});
    

    记得先加载FB JS SDK。即

    <div id="fb-root"></div>
    <script>
      window.fbAsyncInit = function() {
        FB.init({
          appId      : 'YOUR_APP_ID', // App ID
          channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
          status     : true, // check login status
          cookie     : true, // enable cookies to allow the server to access the session
          xfbml      : true  // parse XFBML
        });
    
        // Additional initialization code here
      };
    
      // Load the SDK Asynchronously
      (function(d){
         var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
         if (d.getElementById(id)) {return;}
         js = d.createElement('script'); js.id = id; js.async = true;
         js.src = "//connect.facebook.net/en_US/all.js";
         ref.parentNode.insertBefore(js, ref);
       }(document));
    </script>
    

    【讨论】:

    • 感谢您的回答。我有两个问题:什么是频道 URL,它是我应用的默认页面吗?第二个问题是我应该把 connect.facebook.net 作为脚本放到 head 部分吗?
    【解决方案2】:

    Facebook-c#-sdk 从第 5 版到 v6 测试版(最新版本)发生了很大变化,服务器端不再有 facebook 身份验证方法。为了验证用户并获取您需要的一些数据。

    1. 从 Javascript 进行身份验证并通过发布请求将访问令牌字符串发布到服务器端。

    2. 通过 facebook-c#-sdk 生成登录 URL 并将用户重定向到 auth。对话框。

    要获取 facebook-c#-sdk v6,请在 NuGet 中使用以下命令。

    Install-Package facebook -pre
    

    对于Javascript,只需参考simon604所说的JS库即可。

    客户端 JS 和服务器 C# 通信的一个好方法是创建一个包含访问令牌字符串的隐藏字段。

    【讨论】:

      【解决方案3】:

      好的,我在 facebook 上找到了这个链接 https://developers.facebook.com/blog/post/525/

      它解决了我的请求权限问题

      现在我专注于使用访问令牌来获取用户信息和朋友

      感谢您的回答

      【讨论】:

        猜你喜欢
        • 2012-05-01
        • 2015-09-01
        • 1970-01-01
        • 2011-11-26
        • 2013-06-02
        • 2019-06-06
        • 1970-01-01
        • 2020-10-31
        • 1970-01-01
        相关资源
        最近更新 更多