簡體   English   中英

用facebook驗證ASP.NET網站

[英]ASP.NET website authentication with facebook

我已經看過很多關於ASP .NET網站和Facebook之間集成的文檔,但我還沒有找到一個簡單的工作示例,即使使用Facebook C#SDK。

我想要的只是“登錄Facebook”的例子,並獲取基本的用戶信息(如姓名,電子郵件和照片)。

你能幫幫我嗎?

非常感謝!

正如你所說的using Facebook C# SDK ,這里是canvas和應用程序的一些代碼:

1-從visual studio創建您的Web應用程序
2-安裝nuget並通過nuget Facebook C# SDK
3-來自https://developers.facebook.com/apps/創建和配置您的應用程序。
4-您的Facebook集成的web配置:

<configuration>
  <configSections>
    <section name="facebookSettings" type="Facebook.FacebookConfigurationSection" />
  </configSections>
  <facebookSettings appId="123..." appSecret="abc...." siteUrl="http://apps.facebook.com/myapp/" canvasPage="http://app.facebook.com/myapp" secureCanvasUrl="https://myapp.com/" canvasUrl="http://myapp.com/" cancelUrlPath="http://www.facebook.com/" />
...

通過使用sdk,您可以解析由facebook js sdk編寫的簽名請求或cookie

FacebookWebContext fbWebContext = new FacebookWebContext();
//Check if user auhtenticated
bool IsAuthenticated = fbWebContext.IsAuthenticated(); 

在這里你可以有朋友數:

FacebookWebClient fbWebClient = new FacebookWebClient();
dynamic result = fbWebClient.Get("me/friends");
var friends = result["data"];
int frienCount = friends.Count;

對於客戶端:

<body> 
<div id="fb-root"></div>
<script>

window.fbAsyncInit = function () {
    FB.init({ 
    appId: '123...', 
    status: true, 
    cookie: true, 
    xfbml: true, 
    oauth:true  });
};
(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);            
} ());

<!-- rest of your html -->

</body>

用於從javascript登錄和詢問權限

    FB.getLoginStatus(function(response) {
        console.log( response );
        if ((response.status)&&(response.status=='connected')) {
            //successs
        } else {
            //user declined 
           }, {scope:'user_likes, offline_access'}

    });

我更喜歡在我的項目中進行客戶端登錄,因此尚未注冊的用戶有登陸頁面,如果例如提交表單則我會調用上面的代碼塊。

注意:您必須根據服務器將Internet Explorer的P3P標頭設置為讀/寫cookie。 對於IIS, global.asax

protected void Application_BeginRequest(Object sender, EventArgs e)
{

    HttpContext.Current.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\"");

}

Volià

暫無
暫無

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

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