簡體   English   中英

在ASP.NET 4.0網站中登錄Facebook C#SDK

[英]Facebook c# sdk login in asp.net 4.0 website

我知道多次問過類似的問題,但仍然無法解決。 我想使用最新的facebook C#SDK登錄我的網站,並閱讀已登錄的用戶電子郵件和名稱。

這是我的web.config facebook配置:

  <configSections>
    <section type="Facebook.FacebookConfigurationSection, Facebook" 
    name="facebookSettings" allowLocation="true" allowDefinition="Everywhere" />
  </configSections>
  <facebookSettings appId = "{appId}" appSecret = "{appSecret}"/>

這是我的Facebook SDK和客戶端代碼:

  Your facebook name is :<asp:Label ID="Label1" runat="server" Text="Not authenticated."></asp:Label>

<div id="fb-root">
</div>
<fb:login-button id="fblogin" onlogin="window.open('http://www.filmania.pl/Default.aspx?code=1', '_self')">
</fb:login-button>
<fb:prompt-permission perms="email"></fb:prompt-permission>
<script>
    window.fbAsyncInit = function () {
        FB.init({
            appId: 'applicationId',
            cookie: true,
            xfbml: true,
            oauth: true
        });
        function facebooklogin() {
            FB.login(function (response) {
                if (response.authResponse) {
                    // user authorized
                    //window.location.reload();
                    window.open("http://www.filmania.pl/Default.aspx?code=1", "_self")
                } else {
                    // user cancelled
                }
            }, { scope: 'email' });
        };
    };
    (function () {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
    } ());
</script>

這是我的服務器端代碼:

if (Request.QueryString["code"] == "1")
    {
        try
        {
            var fbWebContext = new FacebookWebContext();
            Label1.Text += fbWebContext.IsAuthenticated();

            if (fbWebContext.IsAuthenticated())
            {
                var fb = new FacebookWebClient();
                dynamic me = fb.Get("me");
                Label1.Text += me.email + " " + me.name;
            }

        }
        catch (Exception ex)
        {
            Label1.Text += ex;
        }
    }

單擊“ Facebook登錄按鈕”后,將顯示Facebook彈出窗口,並要求獲得許可。 似乎可以正常工作,但是在服務器端使用了神奇的Label1.Text之后,它總是== false。 我在這里想念什么? 請幫助我,我迷路了。

根據Javascript SDK,您需要先調用FB.getLoginStatus, 然后再調用FB.login。 這可能會改變您的工作流程。

請參閱: https : //developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/https://developers.facebook.com/docs/reference/javascript/FB.login/

我使用過舊版本的Facebook sdk api,但現在我為在Codeplex上找到的最新穩定版本5.4.1.0制作了示例...

示例在這里: http : //www.simpa.dk/Projects.aspx?CategoryId=1&IndexId=2

希望這可以幫助其他人... :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM