Canvas-аутентификация для c # asp.net и общие принципы - PullRequest
2 голосов
/ 10 февраля 2011

Я пытаюсь найти общие принципы использования Facebook C # SDK для написания приложения Canvas.

Мой подход заключается в следующем.У меня есть главная страница, которую я пытаюсь авторизовать на странице oninit.Все хорошо.В первый раз мы не авторизованы, а во второй раз мы.Когда я отправляю назад все идет не так.Я ожидал, что элемент авторизации / куки / элемент сеанса / элемент представления будет зависать, а элемент авторизатора останется авторизованным.

Похоже, что это не так.

Должен ли я проверить эту авторизацию только один раз, а затем вставить этот токен авторизации в память?затем, когда я хочу получить информацию / опубликовать информацию, передать этот токен авторизации вручную?

Является ли общим принципом, что когда я хочу опубликовать / получить, я создаю новый экземпляр facebookapp и передаю токен аутентификации?

Вот код, который я использовал.

Могу ли я получить некоторые общие принципы, специфичные для c#, asp.ne t, codeplex SDK dlls

Огромное спасибо Spiggers

public partial class facebook : System.Web.UI.MasterPage
{
    protected FacebookApp fbApp;
    protected CanvasAuthorizer authorizer;
    protected FacebookSettings oSettings = new FacebookSettings();

    protected override void OnInit(EventArgs e) {

            //not sure that we need this, or indeed if this works
            //HttpContext.Current.Response.AddHeader("p3p", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");

            oSettings.AppId = Config.Facebook.FacebookApplicationID;
            oSettings.AppSecret = Config.Facebook.FacebookSecret;
            fbApp = new FacebookApp(oSettings);
            authorizer = new CanvasAuthorizer(fbApp);

            if (!authorizer.IsAuthorized()) // postbacks always fail this, to it reposts itself and the postback event does not fire!!!
            {
                string scope = "publish_stream,email,user_birthday";
                var url = Common.Facebook.Authorization.AuthURL(Config.Facebook.FacebookApplicationID, Config.Facebook.RedirectURL, scope);
                var content = CanvasUrlBuilder.GetCanvasRedirectHtml(url);
                Response.ContentType = "text/html";
                Response.Write(content);
                Response.End();
            }
            base.OnInit(e);
        }
     }
...