2011-09-17 71 views
0

我正在使用FB c#SDK開發FB MVC3站點。FB c#SDK權限?

在我的控制器中是這一行 private const string ExtendedPermissions =「user_about_me,publish_stream」;

在登錄方法

是這一行: 如果(fbWebContext.IsAuthorized(ExtendedPermissions.Split(「」)))

它始終返回false,即使我有一個訪問令牌,所以我追查到源代碼...

bool isAuthorized = IsAuthenticated();返回true,以便用戶被授權。然後它會檢查從此調用開始的權限 var currentPerms = HasPermissions(AccessToken,Settings.AppId,UserId,permissions);

它返回值爲「installed」的單個條目。這是沒有道理的,你會在稍後看到。繼續閱讀...

然後它遍歷檢查對FB權限,像這樣通過權限: 的foreach(在權限VAR燙髮) { 如果 { 返回假(currentPerms.Contains(燙)!) ; } } 當然,它會返回false,因爲它的權限user_about_me和publish_stream不在FB權限中。但是,我轉到FB中的應用程序,它顯示這個

訪問我的基本信息 包括姓名,個人資料圖片,性別,網絡,用戶ID,朋友列表以及我與任何人共享的任何其他信息。

所以我的問題是: 「安裝」是什麼意思?並不應該返回user_about_me?

所以不應該在上面的行 var currentPerms = HasPermissions(AccessToken,Settings.AppId,UserId,permissions);

返回「user_about_me」。然而,它只返回單詞「安裝」

所以我知道它爲什麼失敗,但邏輯告訴我,它不應該失敗。它與訪問用戶的FB權限有關。

有沒有其他人看過這個或有答案?

非常感謝

回答

1

我想FB C#SDK 5.2.1,我有一個問題調用hasPermission。但是在這裏搜索並找到了你的實際問題。 FacebookWebContext.Current.HasPermission(「user_about_me」)在我的情況下返回false。但FacebookWebContext.Current.IsAuthorized(「user_about_me」)返回true。

我試着用

if (FacebookWebContext.Current.IsAuthorized("publish_stream")) 

對我返回true。

我也試過你的拆分方法,檢查是否可以一次檢查更多的權限,並且它也返回true。

提示:嘗試最後的SDK版本並嘗試使用FacebookWebContext.Current代替「fbWebContext」(這讓我覺得有什麼不對)。

1

有同樣的問題,並解決它作爲未設置視圖包項目。

檢查傳遞給Facebook的權限/範圍。

我不得不添加

ViewBag.ExtendedPermissions = ExtendedPermissions;

爲了使它在javascript和直通中呈現。