2011-06-02 50 views
1

我目前正在編寫一個在頁面選項卡中運行的Facebook應用程序。我用C#編寫了一個簡單的Web Forms應用程序,使用從NuGet提取的最新版本的C#SDK。主頁面選項卡正常工作。我從FacebookWebContext.Current.SignedRequest獲取所需的所有信息,我很好。我正在嘗試編寫一個頁面,該頁面管理員將使用該頁面來設置應用程序,因此這是在應用程序設置中的「編輯URL」下面的頁面。無法弄清楚如何使用Facebook獲取訪問令牌c#sdk

我真正想要做的就是獲取當前登錄的用戶ID,並確定他是否爲相關頁面的管理員。

我這樣做:

var client = new FacebookClient(); 
dynamic me = client.Get("me"); 
在Page_Load中

,並獲得以下異常:

(OAuthException) An active access token must be used to query information about the current user. 

我已經嘗試了一堆東西來獲得訪問令牌,但我不似乎並不知道我做錯了什麼。有沒有一個簡單的方法來做到這一點?

更新: 我想出了一點,我有一個參考我的母版頁上的舊JS SDK,這是一個問題。 (請參閱here)。刪除,讓我的點,我是通常能夠看到用戶是否真的登錄到Facebook。

回答

3

試試這個:

var fbContext = FacebookWebContext.Current; 
if (fbContext.IsAuthenticated()) 
{ 
    var client = new FacebookClient(fbContext.AccessToken); 
    dynamic me = client.Get("me"); 
} 
+0

謝謝,我基本上做了變化。我想,我的問題是IsAuthenticated()返回false,即使我已登錄到Facebook,並且正在通過Facebook應用程序設置鏈接打開Edit URL頁面。基本上,我不確定在這種情況下,如何告訴頁面被登錄的Facebook用戶打開。我已經看到一些跡象表明,Facebook __用於將signed_request傳遞到「編輯URL」頁面,但似乎他們現在沒有。 – 2011-06-03 12:43:16

+0

在你的Facebook的JavaScript初始化你有'cookie:true'作爲其中一個選項?從我的理解,這是什麼讓服務器訪問Facebook會話。 – Charlino 2011-09-20 17:16:23

1

據我瞭解,是登錄了Facebook並不意味着FacebookWebcontext.Current.isAuthenticated() == true。 Facebook想確保用戶已經授權該應用程序。因此,您應該做的是將頁面轉發到具有必要權限的Facebook授權對話頁面(https://www.facebook.com/dialog/oauth?)。 Facebook將確定該應用是否已獲得用戶授權,並通過發佈更新的access_token重定向到redirect_uri。

+0

感謝發佈。我實際上認爲你所描述的將適用於IsAuthorized()調用而不是IsAuthenticated()調用。我正在與Facebook集成一個新的網站,我再次面臨這個問題。 (我上次放棄了。)現在我發現,即使我確實登錄Facebook並授權了應用程序,我仍然從這兩個函數中獲得虛假回報。 – 2011-07-25 19:00:29

相關問題