0

我是 5 年的开发人员,所以我对 asp.net 并不陌生,但我是 JQuery 和 JSON 的新手,所以也许这就是我没有得到它的原因。我按照这里关于如何成功登录 facebook 的教程进行操作,并且它有效! http://www.codeproject.com/Articles/450535/Using-Facebook-login-in-ASP-NET-application-withou

但我的问题是我在我的网站上制作了一个“评论”系统,我想让用户输入他们的评论,然后在它的正下方单击“使用 facebook 登录”按钮,然后当它成功登录时,拥有它将评论附加到评论列表中。

我唯一的问题是我不知道如何让登录在服务器端触发 C# 代码。我是否在这里遗漏了一些东西以挂钩 facebook 的“登录成功”事件?

我怀疑它与这里的这些代码行有关:

enter codedd here

// This method will be called after the user login into facebook.
    function OnLogin(response) {
        if (response.authResponse) {
            FB.api('/me?fields=id,name,gender,email,birthday', LoadValues);                    
        }
    }

    //This method will load the values to the labels
    function LoadValues (me) {
        if (me.name) {
            document.getElementById('displayname').innerHTML = me.name;
            document.getElementById('FBId').innerHTML = me.id;
            document.getElementById('DisplayEmail').innerHTML = me.email;
            document.getElementById('Gender').innerHTML = me.gender;
            document.getElementById('DOB').innerHTML = me.birthday;
            document.getElementById('auth-loggedin').style.display = 'block';
                        }
    }

或在这里:

<div id="fb-root"></div> <!-- This initializes the FB controls-->   
<div class="fb-login-button" autologoutlink="true" scope="user_birthday,email" >
  Login with Facebook
 </div> <!-- FB Login Button -->   
<!-- Details --> 
<div id="auth-status">    
<div id="auth-loggedin" style="display: none">
    Hi, <span id="displayname"></span><br/>
    Your Facebook ID : <span id="FBId"></span><br/>
    Your Email : <span id="DisplayEmail"></span><br/>
    Your Sex:, <span id="Gender"></span><br/>
    Your Date of Birth :, <span id="DOB"></span><br/>        
</div>
</div>

任何线索或帮助将不胜感激。我是一个很长时间的潜伏者(也许 10 年?),第一次发帖。

4

1 回答 1

0

这是我想到的第一件事,它不是一个完美的解决方案,但它可能适用于这种情况。简而言之,使用 Javascript 在正确的位置(而不是通过用户单击)使用虚拟按钮触发 PostBack 。

1) 在页面的某处放置一个 asp.net 按钮 (runat=server)。这将是一个虚拟按钮,仅用于触发回发,因此使其宽度 = 0 或类似的东西。让我们称之为btnDummmy。使ClientIDMode=static

2) 将服务器端事件附加到 btnDummy。将您的服务器端评论保存逻辑放在那里。注释应该在 asp.net 文本框中( runat=server)。

3) 将 btnDummy 也放入updatePanel中。(这样您就不会丢失跨度值、显示名称、FBId、blabla)

4) 当您在 LoadValues(me) 结束时使用 Facebook 登录,然后返回调用btnDummy.click()

这应该可以解决问题...

于 2013-01-03T07:38:52.820 回答