コード例 #1
0
        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);
        }