public FbAuth Authenticate() { // Allready logged in if (!String.IsNullOrEmpty(sessionKey)) { return(FbAuth.Success); } string authToken = ChannelContext.Current.ClientContext.GetSetting("/Channels/Facebook/AuthToken").ToString(); if (String.IsNullOrEmpty(authToken)) { return(FbAuth.NoAuthKey); } Dictionary <string, string> requestParams = new Dictionary <string, string>(); requestParams.Add("method", "auth.getSession"); requestParams.Add("api_key", apiKey); requestParams.Add("v", "1.0"); requestParams.Add("auth_token", authToken); var result = channel.GetSession(apiKey, GenerateSignature(requestParams, apiSecret), authToken); foreach (XElement resultElement in result.Elements()) { if (resultElement.Name.LocalName.Equals("error_code")) { return(FbAuth.Error); } if (resultElement.Name.LocalName.Equals("session_key")) { sessionKey = resultElement.Value; } else if (resultElement.Name.LocalName.Equals("uid")) { uid = resultElement.Value; } else if (resultElement.Name.LocalName.Equals("secret")) { sessionSecret = resultElement.Value; } } ChannelContext.Current.ClientContext.SaveSetting("/Channels/Facebook/SessionKey", sessionKey); ChannelContext.Current.ClientContext.SaveSetting("/Channels/Facebook/SessionSecret", sessionSecret); ChannelContext.Current.ClientContext.DeleteSetting("/Channels/Facebook/AuthToken"); return(FbAuth.Success); }