Esempio n. 1
0
        private void btnTestSend_Click(object sender, EventArgs e)
        {
            var wx  = new WeChat();
            var msg = wx.SendMessage("kyezuo", "测试消息,有程序停止运行了,赶紧处理!");

            MessageBox.Show(msg["errmsg"].ToString());
        }
Esempio n. 2
0
 public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
 {
     // Override point for customization after application launch.
     // If not required for your application you can safely delete this method
     WeChat.Register("wx617c77c82218ea2c");
     //WeChat.Register("Your - App - Id");
     return(true);
 }
Esempio n. 3
0
 static void Main()
 {
     //Without setting the protocol type to TLS, HTTP requests would fail
     System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls;
     wechat = new WeChat(StartupPath);
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     Application.Run(new QRCodePage());
 }
Esempio n. 4
0
        public DUOJU_IDENTIFIERS GenerateIdentifier(IdentifierTypes type, DateTime expiresTime, IList <KeyValuePair <string, string> > settings, int operatorId)
        {
            DateTime createTime;
            string   identifierNO;

            while (true)
            {
                createTime   = DateTime.Now;
                identifierNO = string.Format(
                    "{0}{1}",
                    ((int)type).ToString().PadLeft(2, '0'),
                    WeChat.ConvertTimeStamp(createTime)
                    );

                if (IdentifierRepository.IsIdentifierNOUnique(identifierNO))
                {
                    break;
                }

                Thread.Sleep(1);
            }

            var identifier = new DUOJU_IDENTIFIERS
            {
                IDENTIFIER_TYPE  = (int)type,
                IDENTIFIER_NO    = identifierNO,
                EXPIRES_TIME     = expiresTime,
                STATUS           = (int)IdentifierStatuses.NEW,
                CREATE_BY        = operatorId,
                CREATE_TIME      = createTime,
                LAST_UPDATE_BY   = operatorId,
                LAST_UPDATE_TIME = DateTime.Now
            };

            if (settings != null && settings.Count > 0)
            {
                foreach (var setting in settings)
                {
                    identifier.DUOJU_IDENTIFIER_SETTINGS.Add(new DUOJU_IDENTIFIER_SETTINGS
                    {
                        SETTING_CODE     = setting.Key,
                        SETTING_VALUE    = setting.Value,
                        CREATE_BY        = operatorId,
                        CREATE_TIME      = DateTime.Now,
                        LAST_UPDATE_BY   = operatorId,
                        LAST_UPDATE_TIME = DateTime.Now
                    });
                }
            }

            IdentifierRepository.AddIdentifier(identifier);
            IdentifierRepository.SaveChanges();

            return(identifier);
        }
Esempio n. 5
0
        // GET: api/Signature
        public DTO.ReturnJasonConstruct <DTO.Signature> Get(string url)
        {
            DTO.ReturnJasonConstruct <DTO.Signature> returnDTO = new DTO.ReturnJasonConstruct <DTO.Signature>();
            DTO.Signature dto = new DTO.Signature();
            dto.nonceStr        = Guid.NewGuid().ToString();
            dto.timeStamp       = WeChat.GetTimeStamp();
            dto.signature       = WeChat.GetSignature(dto.nonceStr, dto.timeStamp, url);
            returnDTO.DTOObject = dto;

            return(returnDTO);
        }
Esempio n. 6
0
        public static void SendNoticeWeiXin(ProgramInfo programInfo)
        {
            if (string.IsNullOrEmpty(NoticeWxUserIds)) return;

            string msg = string.Format("程序名:{0},版本:{1},安装路径:{2},已停止运行了,请尽快处理!",
                                            programInfo.Name, programInfo.Version, programInfo.InstalledLocation);
            var wx = new WeChat();
            var result = wx.SendMessage(NoticeWxUserIds, msg);

            if (result["errmsg"].ToString().Equals("ok", StringComparison.OrdinalIgnoreCase))
            {
                WriteLog(string.Format("程序名:{0},版本:{1},已停止运行超过5分钟,成功发送微信通知到:{2}", programInfo.Name, programInfo.Version, NoticeWxUserIds), false);
            }
        }
Esempio n. 7
0
 public MainWindow()
 {
     InitializeComponent();
     Console.SetOut(new TextBoxWriter(a1));
     CommonMethodCallBackHandlers.DownLoadQRCodeCompleted        += CommonMethodCallBackHandlers_DownLoadQRCodeCompleted;
     CommonMethodCallBackHandlers.LoginScranQRCodeCompleted      += CommonMethodCallBackHandlers_LoginScranQRCodeCompleted;
     CommonMethodCallBackHandlers.LoginCompleted                 += CommonMethodCallBackHandlers_LoginCompleted;
     CommonMethodCallBackHandlers.ReceivedMsgAnalyseMsgCompleted += CommonMethodCallBackHandlers_ReceivedMsgAnalyseMsgCompleted;
     CommonMethodCallBackHandlers.SendMsgCompleted               += CommonMethodCallBackHandlers_SendMsgCompleted;
     new Task(() =>
     {
         WeChat.InitWeChatRobot();
     }).Start();
 }
        public override SocialUser GetUserInfo(WechatAuthenticationTicket ticket)
        {
            string url = string.Format("{0}/sns/userinfo?access_token={1}&openid={2}",
                                       this._options.AuthorizeUrl, ticket.AccessToken, ticket.OpenId);
            string tokenResponse = _httpClient.GetStringAsync(url).Result.ToString();

            if (tokenResponse.IndexOf("errcode") > 0)
            {
                throw new SocialExeception(tokenResponse);
            }
            WeChat qzone = JsonHelper.DeserializeObject <WeChat>(tokenResponse);

            return(new SocialUser
            {
                OpenId = ticket.OpenId,
                NickName = qzone.nickname,
                Profile = qzone.headimgurl,
                Tag = "Wechat",
                Token = ticket.AccessToken,
                RefreshToken = ticket.RefreshToken,
                Extend = qzone.unionid
            });
        }
Esempio n. 9
0
        /// <summary>
        /// 生成请求链接
        /// </summary>
        /// <returns></returns>
        public string Auth(LoginBase.LoginType loginType)
        {
            var url = string.Empty;

            switch (loginType)
            {
            case LoginBase.LoginType.QQ:
                url = QQ.AuthorizationHref(new QQ_Authorization_RequestEntity());
                break;

            case LoginBase.LoginType.WeiBo:
                url = Weibo.AuthorizeHref(new Weibo_Authorize_RequestEntity());
                break;

            case LoginBase.LoginType.WeChat:
                url = WeChat.AuthorizationHref(new WeChat_Authorization_RequestEntity());
                break;

            case LoginBase.LoginType.GitHub:
                url = GitHub.AuthorizeHref(new GitHub_Authorize_RequestEntity());
                break;

            case LoginBase.LoginType.TaoBao:
                url = Taobao.AuthorizeHref(new Taobao_Authorize_RequestEntity());
                break;

            case LoginBase.LoginType.MicroSoft:
                url = MicroSoft.AuthorizeHref(new MicroSoft_Authorize_RequestEntity());
                break;

            default:
                break;
            }

            return(url);
        }
Esempio n. 10
0
        public int AddWeChatUser(WeChatUserInfo info)
        {
            var user  = UserRepository.GetUserByOpenId(info.openid);
            var isAdd = user == null;

            var subscribed = info.subscribe.HasValue ?
                             (YesNo)Enum.Parse(typeof(YesNo), info.subscribe.Value.ToString()) :
                             (user != null && user.SUBSCRIBED == YesNo.Y.ToString() ? YesNo.Y : YesNo.N);

            if (isAdd)
            {
                var rolePrivilege = UserRepository.GetRolePrivilege(UserRoles.USER.ToString());
                user = new DUOJU_USERS
                {
                    ACCOUNT = string.Format(CommonSettings.USERACCOUNT_WECHAT_FORMAT, info.openid),
                    SOURCE  = (int)UserSources.WECHAT,
                    DUOJU_ROLE_PRIVILEGES = rolePrivilege,
                    PRIVILEGES            = rolePrivilege.PRIVILEGES,
                    OPEN_ID     = info.openid,
                    CREATE_BY   = CommonSettings.OPERATOR_SYSTEM_ID,
                    CREATE_TIME = DateTime.Now
                };
            }

            user.SUBSCRIBED = subscribed.ToString();
            if (subscribed == YesNo.Y)
            {
                if (info.subscribe_time.HasValue)
                {
                    user.SUBSCRIBE_TIME = WeChat.ConvertDateTime(info.subscribe_time.Value);
                }
                user.NICK_NAME = info.nickname;
                if (info.sex.HasValue)
                {
                    user.SEX = ((UserSexes)Enum.Parse(typeof(UserSexes), info.sex.Value.ToString())).ToString();
                }
                user.HEAD_IMG_URL = info.headimgurl;
                if (!string.IsNullOrEmpty(info.country))
                {
                    var country = AreaRepository.GetCountryInfoByName(info.country);
                    if (country != null)
                    {
                        user.DUOJU_COUNTRIES = country;
                    }
                }
                if (!string.IsNullOrEmpty(info.province))
                {
                    var province = AreaRepository.GetProvinceInfoByName(info.province);
                    if (province != null)
                    {
                        user.DUOJU_PROVINCES = province;
                    }
                }
                if (!string.IsNullOrEmpty(info.city))
                {
                    var city = AreaRepository.GetCityInfoByName(info.city);
                    if (city != null)
                    {
                        user.DUOJU_CITIES = city;
                    }
                }
            }
            user.ENABLED          = YesNo.Y.ToString();
            user.LAST_UPDATE_BY   = CommonSettings.OPERATOR_SYSTEM_ID;
            user.LAST_UPDATE_TIME = DateTime.Now;

            if (isAdd)
            {
                user.DUOJU_USER_FINANCES.Add(new DUOJU_USER_FINANCES
                {
                    COIN_COUNT       = CommonSettings.USERREGISTER_DEFAULT_COIN_COUNT,
                    CREATE_BY        = CommonSettings.OPERATOR_SYSTEM_ID,
                    CREATE_TIME      = DateTime.Now,
                    LAST_UPDATE_BY   = CommonSettings.OPERATOR_SYSTEM_ID,
                    LAST_UPDATE_TIME = DateTime.Now
                });

                UserRepository.AddUser(user);
            }
            UserRepository.SaveChanges();

            return(user.USER_ID);
        }
Esempio n. 11
0
        /// <summary>
        /// 登录链接
        /// </summary>
        /// <param name="loginType">登录类型</param>
        /// <param name="authType">登录防伪追加标识,区分登录、注册</param>
        /// <returns></returns>
        public static string LoginLink(string loginType, string authType = "")
        {
            string url = string.Empty;

            if (Enum.TryParse(loginType, true, out LoginBase.LoginType vtype))
            {
                switch (vtype)
                {
                case LoginBase.LoginType.QQ:
                {
                    var reqe = new QQ_Authorization_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = QQ.AuthorizationHref(reqe);
                }
                break;

                case LoginBase.LoginType.WeiBo:
                {
                    var reqe = new Weibo_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = Weibo.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.WeChat:
                {
                    var reqe = new WeChat_Authorization_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = WeChat.AuthorizationHref(reqe);
                }
                break;

                case LoginBase.LoginType.GitHub:
                {
                    var reqe = new GitHub_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = GitHub.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.Gitee:
                {
                    var reqe = new Gitee_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = Gitee.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.TaoBao:
                {
                    var reqe = new TaoBao_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = TaoBao.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.MicroSoft:
                {
                    var reqe = new MicroSoft_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = MicroSoft.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.DingTalk:
                {
                    var reqe = new DingTalk_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = DingTalk.AuthorizeHref_ScanCode(reqe);
                }
                break;

                case LoginBase.LoginType.Google:
                {
                    var reqe = new Google_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = Google.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.AliPay:
                {
                    var reqe = new AliPay_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = AliPay.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.StackOverflow:
                {
                    var reqe = new StackOverflow_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = StackOverflow.AuthorizeHref(reqe);
                }
                break;
                }
            }

            if (string.IsNullOrWhiteSpace(url))
            {
                url = "/account/login";
            }

            return(url);
        }
Esempio n. 12
0
 public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
 {
     return(WeChat.OpenUrl(url));
 }
Esempio n. 13
0
 public override bool HandleOpenURL(UIApplication application, NSUrl url)
 {
     return(WeChat.OpenUrl(url));
 }
Esempio n. 14
0
        /// <summary>
        /// 回调方法
        /// </summary>
        /// <param name="code">请求链接得到的code</param>
        /// <param name="loginType">登录类型</param>
        public void AuthCallback(string code, LoginBase.LoginType loginType)
        {
            if (string.IsNullOrWhiteSpace(code))
            {
                //打开链接没登录授权
            }
            else
            {
                //唯一标示
                string openId = string.Empty;

                switch (loginType)
                {
                case LoginBase.LoginType.QQ:
                {
                    //获取 access_token
                    var tokenEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity()
                        {
                            code = code
                        });

                    //获取 OpendId
                    var openidEntity = QQ.OpenId(new QQ_OpenId_RequestEntity()
                        {
                            access_token = tokenEntity.access_token
                        });

                    //获取 UserInfo
                    var userEntity = QQ.OpenId_Get_User_Info(new QQ_OpenAPI_RequestEntity()
                        {
                            access_token = tokenEntity.access_token,
                            openid       = openidEntity.openid
                        });

                    //身份唯一标识
                    openId = openidEntity.openid;
                }
                break;

                case LoginBase.LoginType.WeiBo:
                {
                    //获取 access_token
                    var tokenEntity = Weibo.AccessToken(new Weibo_AccessToken_RequestEntity()
                        {
                            code = code
                        });

                    //获取 access_token 的授权信息
                    var tokenInfoEntity = Weibo.GetTokenInfo(new Weibo_GetTokenInfo_RequestEntity()
                        {
                            access_token = tokenEntity.access_token
                        });

                    //获取 users/show
                    var userEntity = Weibo.UserShow(new Weibo_UserShow_RequestEntity()
                        {
                            access_token = tokenEntity.access_token,
                            uid          = Convert.ToInt64(tokenInfoEntity.uid)
                        });

                    openId = tokenEntity.access_token;
                }
                break;

                case LoginBase.LoginType.WeChat:
                {
                    //获取 access_token
                    var tokenEntity = WeChat.AccessToken(new WeChat_AccessToken_RequestEntity()
                        {
                            code = code
                        });

                    //获取 user
                    var userEntity = WeChat.Get_User_Info(new WeChat_OpenAPI_RequestEntity()
                        {
                            access_token = tokenEntity.access_token,
                            openid       = tokenEntity.openid
                        });

                    //身份唯一标识
                    openId = tokenEntity.openid;
                }
                break;

                case LoginBase.LoginType.GitHub:
                {
                    //申请的应用名称,非常重要
                    GitHubConfig.ApplicationName = "netnrf";

                    //获取 access_token
                    var tokenEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity()
                        {
                            code = code
                        });

                    //获取 user
                    var userEntity = GitHub.User(new GitHub_User_RequestEntity()
                        {
                            access_token = tokenEntity.access_token
                        });

                    openId = userEntity.id.ToString();
                }
                break;

                case LoginBase.LoginType.TaoBao:
                {
                    //获取 access_token
                    var tokenEntity = Taobao.AccessToken(new Taobao_AccessToken_RequestEntity()
                        {
                            code = code
                        });

                    openId = tokenEntity.open_uid;
                }
                break;

                case LoginBase.LoginType.MicroSoft:
                {
                    //获取 access_token
                    var tokenEntity = MicroSoft.AccessToken(new MicroSoft_AccessToken_RequestEntity()
                        {
                            code = code
                        });

                    //获取 user
                    var userEntity = MicroSoft.User(new MicroSoft_User_RequestEntity()
                        {
                            access_token = tokenEntity.access_token
                        });

                    openId = userEntity.id.ToString();
                }
                break;
                }

                //拿到登录标识
                if (string.IsNullOrWhiteSpace(openId))
                {
                    //TO DO
                }
            }
        }
Esempio n. 15
0
        public ActionResult Index()
        {
            var receiveModel = WeChat.ConvertReceiveXML(Request.InputStream);

            logger.Info(JsonHelper.GetJsonWithModel(receiveModel));

            var sendModel = new WeChatSendMessageModel
            {
                ToUserName   = receiveModel.FromUserName,
                FromUserName = receiveModel.ToUserName,
                CreateTime   = WeChat.ConvertTimeStamp(DateTime.Now)
            };

            switch (receiveModel.MsgType)
            {
            case MsgTypes.TEXT:
                switch (receiveModel.Content)
                {
                case "gm":
                    sendModel.MsgType = MsgTypes.TEXT;
                    sendModel.Content = WeChatHelper.WeChat.GetMenu();
                    break;

                case "cm":
                    var menuInfo = new WeChatMenuInfo
                    {
                        button = new List <WeChatMenuItemInfo>
                        {
                            new WeChatMenuItemInfo
                            {
                                name       = "开始",
                                sub_button = new List <WeChatMenuItemInfo>
                                {
                                    new WeChatMenuItemInfo
                                    {
                                        name = "发布聚会",
                                        type = MenuItemTypes.VIEW.ToString().ToLower(),
                                        url  = WeChatHelper.WeChat.ConvertOAuthUrl("http://wechat.duoju.us/Party/PublishParty/1", OauthScopes.SNSAPI_BASE, null)
                                    },
                                    new WeChatMenuItemInfo
                                    {
                                        name = "使用说明",
                                        type = MenuItemTypes.CLICK.ToString().ToLower(),
                                        key  = "key_instruction"
                                    }
                                }
                            },
                            new WeChatMenuItemInfo
                            {
                                name       = "个人",
                                sub_button = new List <WeChatMenuItemInfo>
                                {
                                    new WeChatMenuItemInfo
                                    {
                                        name = "发布的聚会",
                                        type = MenuItemTypes.VIEW.ToString().ToLower(),
                                        url  = WeChatHelper.WeChat.ConvertOAuthUrl("http://wechat.duoju.us/Party/MyParties", OauthScopes.SNSAPI_BASE, null)
                                    },
                                    new WeChatMenuItemInfo
                                    {
                                        name = "参与的聚会",
                                        type = MenuItemTypes.VIEW.ToString().ToLower(),
                                        url  = WeChatHelper.WeChat.ConvertOAuthUrl("http://wechat.duoju.us/Party/MyParticipateParties", OauthScopes.SNSAPI_BASE, null)
                                    },
                                    new WeChatMenuItemInfo
                                    {
                                        name = "个人财产",
                                        type = MenuItemTypes.VIEW.ToString().ToLower(),
                                        url  = WeChatHelper.WeChat.ConvertOAuthUrl("http://wechat.duoju.us/User/MyFinances", OauthScopes.SNSAPI_BASE, null)
                                    },
                                    new WeChatMenuItemInfo
                                    {
                                        name = "点赞支持",
                                        type = MenuItemTypes.CLICK.ToString().ToLower(),
                                        key  = "key_praise",
                                    }
                                }
                            }
                        }
                    };

                    sendModel.MsgType = MsgTypes.TEXT;
                    sendModel.Content = JsonHelper.GetJsonWithModel(WeChatHelper.WeChat.CreateMenu(menuInfo));
                    break;

                    //case "dm":
                    //    sendModel.MsgType = MsgTypes.TEXT;
                    //    sendModel.Content = JsonHelper.GetJsonWithModel(WeChatHelper.WeChat.DeleteMenu());
                    //    break;
                }
                break;

            case MsgTypes.EVENT:
                switch (receiveModel.Event.Value)
                {
                case Events.SUBSCRIBE:
                    logger.WarnFormat("user ({0}) subscribe{1}.",
                                      receiveModel.FromUserName,
                                      string.IsNullOrEmpty(receiveModel.Ticket) ? null : string.Format(" with ticket ({0})", receiveModel.Ticket)
                                      );

                    try
                    {
                        var subscribeUser = WeChatHelper.WeChat.GetWeChatUserInfo(receiveModel.FromUserName);
                        var userid        = UserService.AddWeChatUser(subscribeUser);
                    }
                    catch (Exception ex)
                    {
                        logger.Warn(ex);
                    }

                    sendModel.MsgType = MsgTypes.TEXT;
                    sendModel.Content = "欢迎关注!";
                    break;

                case Events.SCAN:
                    logger.WarnFormat("user ({0}) scan, ticket: {1}.",
                                      receiveModel.FromUserName,
                                      receiveModel.Ticket
                                      );
                    break;

                case Events.UNSUBSCRIBE:
                    logger.WarnFormat("user ({0}) unsubscribe.", receiveModel.FromUserName);

                    UserService.WeChatUserUnsubscribe(receiveModel.FromUserName);
                    break;

                case Events.CLICK:
                    logger.InfoFormat("user click {0}.", receiveModel.EventKey);

                    switch (receiveModel.EventKey)
                    {
                    case "key_instruction":
                        sendModel.MsgType = MsgTypes.TEXT;
                        sendModel.Content = "图片版说明weibo:<a href=\"http://www.weibo.com/\">Go</a>\r\n文字版说明qqweibo:<a href=\"http://t.qq.com/\">Go</a>";
                        break;

                    case "key_praise":
                        logger.WarnFormat("user ({0}) praise.", receiveModel.FromUserName);

                        sendModel.MsgType = MsgTypes.TEXT;
                        sendModel.Content = "感谢您的支持!";
                        break;
                    }
                    break;

                case Events.VIEW:
                    logger.InfoFormat("user view {0}.", receiveModel.EventKey);
                    break;
                }
                break;
            }

            return(Content(WeChat.ConvertSendXML(sendModel)));
        }
Esempio n. 16
0
            /// <summary>
            /// 生成请求链接
            /// </summary>
            /// <param name="authType">在防伪参数追加信息(可用于登录、注册、绑定、解绑区分)</param>
            /// <returns></returns>
            public string Auth(string authType = "")
            {
                var url = string.Empty;

                switch (loginType)
                {
                case LoginBase.LoginType.QQ:
                {
                    var reqe = new QQ_Authorization_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = QQ.AuthorizationHref(reqe);
                }
                break;

                case LoginBase.LoginType.WeiBo:
                {
                    var reqe = new Weibo_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = Weibo.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.GitHub:
                {
                    var reqe = new GitHub_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = GitHub.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.TaoBao:
                {
                    var reqe = new TaoBao_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = TaoBao.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.MicroSoft:
                {
                    var reqe = new MicroSoft_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = MicroSoft.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.WeChat:
                {
                    var reqe = new WeChat_Authorization_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = WeChat.AuthorizationHref(reqe);
                }
                break;

                case LoginBase.LoginType.DingTalk:
                {
                    var reqe = new DingTalk_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    //扫描模式
                    url = DingTalk.AuthorizeHref_ScanCode(reqe);

                    //密码模式
                    //url = DingTalk.AuthorizeHref_Password(reqe);
                }
                break;

                case LoginBase.LoginType.Gitee:
                {
                    var reqe = new Gitee_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = Gitee.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.Google:
                {
                    var reqe = new Google_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = Google.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.AliPay:
                {
                    var reqe = new AliPay_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = AliPay.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.StackOverflow:
                {
                    var reqe = new StackOverflow_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = StackOverflow.AuthorizeHref(reqe);
                }
                break;
                }

                return(url);
            }
Esempio n. 17
0
            /// <summary>
            /// 回调方法
            /// </summary>
            /// <param name="authorizeResult">接收授权码、防伪参数</param>
            public void AuthCallback(LoginBase.AuthorizeResult authorizeResult)
            {
                if (!string.IsNullOrWhiteSpace(authorizeResult.code) || !string.IsNullOrWhiteSpace(authorizeResult.auth_code))
                {
                    //唯一标识
                    string OpenId = string.Empty;

                    switch (loginType)
                    {
                    case LoginBase.LoginType.QQ:
                    {
                        //获取 access_token
                        var tokenEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 OpendId
                        var openidEntity = QQ.OpenId(new QQ_OpenId_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        //获取 UserInfo
                        _ = QQ.OpenId_Get_User_Info(new QQ_OpenAPI_RequestEntity()
                            {
                                access_token = tokenEntity.access_token,
                                openid       = openidEntity.openid
                            });

                        //身份唯一标识
                        OpenId = openidEntity.openid;
                    }
                    break;

                    case LoginBase.LoginType.WeiBo:
                    {
                        //获取 access_token
                        var tokenEntity = Weibo.AccessToken(new Weibo_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 access_token 的授权信息
                        var tokenInfoEntity = Weibo.GetTokenInfo(new Weibo_GetTokenInfo_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        //获取 users/show
                        _ = Weibo.UserShow(new Weibo_UserShow_RequestEntity()
                            {
                                access_token = tokenEntity.access_token,
                                uid          = Convert.ToInt64(tokenInfoEntity.uid)
                            });

                        OpenId = tokenEntity.access_token;
                    }
                    break;

                    case LoginBase.LoginType.WeChat:
                    {
                        //获取 access_token
                        var tokenEntity = WeChat.AccessToken(new WeChat_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 user
                        _ = WeChat.Get_User_Info(new WeChat_OpenAPI_RequestEntity()
                            {
                                access_token = tokenEntity.access_token,
                                openid       = tokenEntity.openid
                            });

                        //身份唯一标识
                        OpenId = tokenEntity.openid;
                    }
                    break;

                    case LoginBase.LoginType.GitHub:
                    {
                        //获取 access_token
                        var tokenEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 user
                        var userEntity = GitHub.User(new GitHub_User_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        OpenId = userEntity.id.ToString();
                    }
                    break;

                    case LoginBase.LoginType.TaoBao:
                    {
                        //获取 access_token
                        var tokenEntity = TaoBao.AccessToken(new TaoBao_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        OpenId = tokenEntity.open_uid;
                    }
                    break;

                    case LoginBase.LoginType.MicroSoft:
                    {
                        //获取 access_token
                        var tokenEntity = MicroSoft.AccessToken(new MicroSoft_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 user
                        var userEntity = MicroSoft.User(new MicroSoft_User_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        OpenId = userEntity.id.ToString();
                    }
                    break;

                    case LoginBase.LoginType.DingTalk:
                    {
                        //获取 user
                        var userEntity = DingTalk.User(new DingTalk_User_RequestEntity(), authorizeResult.code);

                        OpenId = userEntity?.openid;
                    }
                    break;

                    case LoginBase.LoginType.Gitee:
                    {
                        //获取 access_token
                        var tokenEntity = Gitee.AccessToken(new Gitee_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 user
                        var userEntity = Gitee.User(new Gitee_User_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        OpenId = userEntity.id.ToString();
                    }
                    break;

                    case LoginBase.LoginType.Google:
                    {
                        //获取 access_token
                        var tokenEntity = Google.AccessToken(new Google_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 user
                        var userEntity = Google.User(new Google_User_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        OpenId = userEntity.sub;
                    }
                    break;

                    case LoginBase.LoginType.AliPay:
                    {
                        //获取 access_token
                        var tokenEntity = AliPay.AccessToken(new AliPay_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.auth_code
                            });

                        //实际上这一步已经获取到 OpenId,登录验证可以了,获取个人信息还需调用下面的接口
                        //tokenEntity.user_id

                        //获取 user
                        var userEntity = AliPay.User(new AliPay_User_RequestEntity()
                            {
                                auth_token = tokenEntity.access_token
                            });

                        OpenId = userEntity.user_id;
                    }
                    break;

                    case LoginBase.LoginType.StackOverflow:
                    {
                        //获取 access_token
                        var tokenEntity = StackOverflow.AccessToken(new StackOverflow_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 user
                        var userEntity = StackOverflow.User(new StackOverflow_User_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        OpenId = userEntity.user_id;
                    }
                    break;
                    }

                    //拿到登录标识
                    if (string.IsNullOrWhiteSpace(OpenId))
                    {
                        //TO DO
                    }
                }
            }
Esempio n. 18
0
 /// <summary>
 /// Start is called on the frame when a script is enabled just before
 /// any of the Update methods is called the first time.
 /// </summary>
 void Start()
 {
     _instance = this;
 }
Esempio n. 19
0
            /// <summary>
            /// 回调方法
            /// </summary>
            /// <param name="authorizeResult">接收授权码、防伪参数</param>
            public void AuthCallback(LoginBase.AuthorizeResult authorizeResult)
            {
                if (string.IsNullOrWhiteSpace(authorizeResult.code))
                {
                    //打开链接没登录授权
                }
                else
                {
                    //唯一标示
                    string OpenId = string.Empty;

                    switch (loginType)
                    {
                    case LoginBase.LoginType.QQ:
                    {
                        //获取 access_token
                        var tokenEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 OpendId
                        var openidEntity = QQ.OpenId(new QQ_OpenId_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        //获取 UserInfo
                        _ = QQ.OpenId_Get_User_Info(new QQ_OpenAPI_RequestEntity()
                            {
                                access_token = tokenEntity.access_token,
                                openid       = openidEntity.openid
                            });

                        //身份唯一标识
                        OpenId = openidEntity.openid;
                    }
                    break;

                    case LoginBase.LoginType.WeiBo:
                    {
                        //获取 access_token
                        var tokenEntity = Weibo.AccessToken(new Weibo_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 access_token 的授权信息
                        var tokenInfoEntity = Weibo.GetTokenInfo(new Weibo_GetTokenInfo_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        //获取 users/show
                        _ = Weibo.UserShow(new Weibo_UserShow_RequestEntity()
                            {
                                access_token = tokenEntity.access_token,
                                uid          = Convert.ToInt64(tokenInfoEntity.uid)
                            });

                        OpenId = tokenEntity.access_token;
                    }
                    break;

                    case LoginBase.LoginType.WeChat:
                    {
                        //获取 access_token
                        var tokenEntity = WeChat.AccessToken(new WeChat_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 user
                        _ = WeChat.Get_User_Info(new WeChat_OpenAPI_RequestEntity()
                            {
                                access_token = tokenEntity.access_token,
                                openid       = tokenEntity.openid
                            });

                        //身份唯一标识
                        OpenId = tokenEntity.openid;
                    }
                    break;

                    case LoginBase.LoginType.GitHub:
                    {
                        //获取 access_token
                        var tokenEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 user
                        var userEntity = GitHub.User(new GitHub_User_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        OpenId = userEntity.id.ToString();
                    }
                    break;

                    case LoginBase.LoginType.TaoBao:
                    {
                        //获取 access_token
                        var tokenEntity = TaoBao.AccessToken(new TaoBao_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        OpenId = tokenEntity.open_uid;
                    }
                    break;

                    case LoginBase.LoginType.MicroSoft:
                    {
                        //获取 access_token
                        var tokenEntity = MicroSoft.AccessToken(new MicroSoft_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 user
                        var userEntity = MicroSoft.User(new MicroSoft_User_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        OpenId = userEntity.id.ToString();
                    }
                    break;

                    case LoginBase.LoginType.DingTalk:
                    {
                        //获取 user
                        var userEntity = DingTalk.User(new DingTalk_User_RequestEntity(), authorizeResult.code);

                        OpenId = userEntity?.openid;
                    }
                    break;

                    case LoginBase.LoginType.Gitee:
                    {
                        //获取 access_token
                        var tokenEntity = Gitee.AccessToken(new Gitee_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

                        //获取 user
                        var userEntity = Gitee.User(new Gitee_User_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });

                        OpenId = userEntity.id.ToString();
                    }
                    break;
                    }

                    //拿到登录标识
                    if (string.IsNullOrWhiteSpace(OpenId))
                    {
                        //TO DO
                    }
                }
            }