2012-03-07 87 views
0

我有一個相當簡單的網站,允許用戶通過Facebook進行連接。使用C#facebook SDK無法獲得任何Facebook權限

我正在使用C#facebook sdk MVC。

起初我不需要任何特定的權限,所以用戶沒有問題連接。我的代碼看起來像這樣

public class FacebookController : BaseController 
{ 
    public FacebookSession FacebookSession 
    { 
     get { return (new CanvasAuthorizer().Session); } 
    } 
    public ActionResult Profile() 
    { 
     var client = new FacebookClient(this.FacebookSession.AccessToken); 
     dynamic me = client.Get("me"); 
     ViewBag.Name = me.name; 
     ViewBag.Id = me.id; 
     return View(); 
    } 
} 

,並在我的webconfig

<facebookSettings appId="XXXXXXXXXXXXXX" appSecret="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"/> 

過了一會兒,我需要更具體的權限,所以我說CanvasAuthorize到我的行動 - 爲使

[CanvasAuthorize(Permissions = "user_about_me,user_relationships,email,publish_stream")] 
public ActionResult Profile() 

這讓我有以下異常: 異常詳細信息:System.Exception:CanvasUrl爲空或空

所以我添加到我的Webconfig的canvasUrl這讓我同樣的錯誤與出畫布所以現在我的web配置了所有4

<facebookSettings appId="XXXXXXXXXX" appSecret="XXXXXXXXXXXXXXXXXXXXx" canvasUrl = "http://localhost:60606/" canvasPage = "https://apps.facebook.com/XXXXXXXXXXXX/"/> 

所以現在我的用戶可以通過Facebook登錄,我的問題是,當他並登錄他越來越重定向到我的Facebook應用程序(http://apps.facebook.com/XXXXXXXXX/facebook/profile

,而不是回到我的網站(的http://本地主機:60606/facebook/profile

我怎樣才能得到Pe我需要的權限以及在用戶登錄後將用戶重定向回我的網站?

感謝

回答

0

好了,我的壞

CanvasAuthorize只是因爲它的聲音,帆布授權。 所以你不能在沒有facebook上的應用程序畫布的情況下使用它。

我應該做的就是使用FacebookOAuthClient

var oAuthClient = new FacebookOAuthClient(FacebookApplication.Current); 
oAuthClient.RedirectUri = new Uri("XXXXXXXXXXXXXX"); 
var loginUri = oAuthClient.GetLoginUrl(new Dictionary<string, object> { { "state", null }, { "scope", "user_about_me,user_relationships,email" } }); 
return Redirect(loginUri.AbsoluteUri);