Не удается получить какие-либо разрешения Facebook с C # facebook SDK - PullRequest
0 голосов
/ 07 марта 2012

У меня довольно простой сайт, который позволяет пользователям подключаться через 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 является нулевым или пустым

Итак, я добавил в свою веб-конфигурацию canvasUrl, которая вызвала у меня ту же ошибку без canvasPage. Так что теперь моя веб-конфигурация имеет все 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://localhost:60606/facebook/profile)

Как я могу получить необходимые мне разрешения и перенаправить моего пользователя обратно на мой сайт после того, как он войдет в систему?

Спасибо

1 Ответ

0 голосов
/ 14 марта 2012

Ну что ж, мой плохой

CanvasAuthorize это как бы звучит, авторизация для canvas.Поэтому вы не можете использовать его без холста приложения на 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);
...