private void UpdateLoginData(SdkAuth2Res res)
        {
            if (LoginData == null)
                LoginData = new LoginData();

            LoginData.access_token = res.AccessToken;
            LoginData.expires_in = int.Parse(res.ExpriesIn);
            LoginData.refresh_token = res.RefreshToken;
            LoginData.source = LoginType.Sina.Convert();
            LoginData.user = res.Uid;

            StorageUtil.AddObject(LoginDataKey, LoginData);
        }
Beispiel #2
0
        /// <summary>
        /// 处理授权结果.
        /// </summary>
        /// <param name="response"></param>
        private void HandleResult(RestResponse response)
        {
            SdkAuthError err         = new SdkAuthError();
            string       responseStr = response.Content;

            if (response.StatusCode != (int)HttpStatusCode.OK || response.ErrorException != null)
            {
                if (response.ContentLength == 0D)
                {
                    err.errCode = SdkErrCode.NET_UNUSUAL;
                    if (null != LoginCallback)
                    {
                        LoginCallback(false, err, null);
                    }
                    return;
                }
                // 解析错误信息.
                OAuthErrRes errRes = SerializeOAuthResult <OAuthErrRes>(responseStr);

                err.errCode      = SdkErrCode.SERVER_ERR;
                err.specificCode = errRes.ErrorCode;
                err.errMessage   = errRes.errDes;

                if (null != LoginCallback)
                {
                    LoginCallback(false, err, null);
                }
            }
            else
            {
                err.errCode = SdkErrCode.SUCCESS;
                SdkAuth2Res oauthResult = SerializeOAuthResult <SdkAuth2Res>(responseStr);

                // 保存AccessToken.
                SdkData.AccessToken = oauthResult.AccessToken;
                localSettings.Values[Constants.ACCESSTOKEN]  = oauthResult.AccessToken;
                localSettings.Values[Constants.EXPIREDTIME]  = string.IsNullOrEmpty(oauthResult.ExpriesIn) ? 0: long.Parse(oauthResult.ExpriesIn);
                localSettings.Values[Constants.LASTAUTHTIME] = Unix2DateTime.GetUnixTimestamp();
                if (oauthResult.RefreshToken != null)
                {
                    localSettings.Values[Constants.REFRESHTOKEN] = oauthResult.RefreshToken;
                }

                if (null != LoginCallback)
                {
                    LoginCallback(true, err, oauthResult);
                }
            }
        }