2011-12-24 52 views
5

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

我只想要一個「以Facebook登錄」的例子,並獲得基本的用戶信息(如姓名,電子郵件和照片)。

你們能幫我嗎?

非常感謝!

+1

雖然這看起來有些重複的基本問題,這是非常真實的,即使是在我開發的東西我無法找到任何像樣的例子,我看到了各種不同代碼遍佈幾個博客文章。 – gideon

回答

9

就像你說的using Facebook C# SDK,那麼這裏就是路徑和畫布應用程序的一些代碼:

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寫

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à

+1

工作完美!非常感謝! –

+0

@asdf_enel_hak我找不到FacebookWebContext –

+0

@asdf_enel_hak也找不到FacebookWebClient –