2012-03-07 103 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);