精华内容
下载资源
问答
  • 在网页上改了篇博客,但是没有同步到手机客户端,所以我想是不是需要重新登录一下。请老师们多多指教
  • 根据我们的项目,因为微信登录最近可能存在的调用问题,我们采取了手机登录游戏客户端的想法。 实现的大体思路:前提是微信登录游戏,然后在客户端上绑定手机号。以后即便微信登录不上,我们也可以实现手机登录游戏...

    根据我们的项目,因为微信登录最近可能存在的调用问题,我们采取了手机登录游戏客户端的想法。

    实现的大体思路:前提是微信登录游戏,然后在客户端上绑定手机号。以后即便微信登录不上,我们也可以实现手机登录游戏了。

    1. 微信登录

    2. 绑定手机号(需要验证码,服务端接入阿里的sdk去获取验证码),客户端需要将手机号,验证码,密码等信息传送给服务端。

        public requestBindPhone(codeData: IbindPhoneData, callback) {
            new HRequestProtocol(HttpA.bind_phone,
                {
                    uid: GamePlayer.getInstance().playerId,
                    phone: codeData.phone,
                    passwd: codeData.passwd,
                    code: codeData.code,
                }).onResponseT((errorcode, data: IbindPhoneData) => {
                    ViewMgr.getInstance().popLoading();
                    // 请求成功
                    if (errorcode === 0) {
                        ViewMgr.getInstance().pushTip(GameStr[1516757572763]);
                    } else if (errorcode === -1) {
                        // 输入的验证码错误
                        ViewMgr.getInstance().pushTip(GameStr.T1545641016344);
                        return;
                    } else if (errorcode === 14) {
                        // 手机号绑定过之前的账号
                        ViewMgr.getInstance().pushTip(GameStr.T1547469191331);
                        return;
                    }
                    callback();
                    this.fetchPlayerInfo();
                    GameMainScene.getInstance().onBindPhone(true);
                }).send();
        }

    3. 绑定成功以后就可以退出微信登录,实现手机登录

     public requestPhoneLogin(delegate: ILoginDelegate, request: IbindPhoneData, callback: () => void) {
            // 位置数据
            if (flavor.checkFeature(Feature.LocationViewer)) {
                request.location = LocationHelper.getLocationData();
            }
            request.upper_player = OpenInstallHelper.getData().upper_player;
            request.upper_agent = OpenInstallHelper.getData().upper_agent;
            let resendCount = 0;
            new HRequestProtocol(HttpA.phoneLogin, request)
                .onResponseT((errorcode, data: LoginResponse) => {
                    if (errorcode !== 0) {
                        ViewMgr.getInstance().removeLoading();
                        switch (errorcode) {
                            case HttpErrorCode.PLAYER_FROZEN:
                            {
                                const str = cc.js.formatStr(replaceAll(GameStr[1516333420026], {appName: QPGame.getInstance().appData.appName}), GameUtil.formatDateTime(new Date(data.exTime * 1000)));
                                ViewMgr.getInstance().showConfirmAlert(str);
                            }
                            break;
                            case HttpErrorCode.PHONE_ERROR:
                            {
                                ViewMgr.getInstance().pushTip(GameStr.T1547448667359);
                            }
                            break;
                            case HttpErrorCode.PASSWD_ERROR:
                            {
                                ViewMgr.getInstance().pushTip(GameStr.T1547448786686);
                            }
                            break;
                            default:
                            {
                                ViewMgr.getInstance().pushTip("登录错误 错误码: " + errorcode);
                            }
                            break;
                        }
                        return;
                    }
                    QPGame.getInstance().mIsphoneLogin = true;
                    if (flavor.checkFeature(Feature.GameShield)) {
                        ServerList.sGameShield.token = hashCode(data.playerId).toString();
                    }
                    UserData.getInstance().addData({
                        nickname: data.nickname,
                        ip: data.ip,
                        playerId: data.playerId,
                    });
                    GamePlayer.getInstance().parse(data); // todo model
                    delegate.onLoginSuccessed(data);
                    callback();
                })
                .onError((status: number, protocol: HRequestProtocol) => {
                    resendCount++;
                    if (resendCount > 5) {
                        ViewMgr.getInstance().popLoading();
                        ViewMgr.getInstance().showConfirmAlert(GameStr.T1545633633478, () => {
                            resendCount = 0;
                        });
                        return;
                    }
                    // 重试
                    setTimeout(() => {
                        protocol.resend();
                    }, 1000);
                })
                .send(null, {timeout: 10 * 1000});
        }

    4. 手机绑定完毕。是不是很简单的思路呢??

    展开全文
  • 如何部署社区手机客户端? 下载安装包覆盖到论坛,执行安装,而后进入论坛后台,根据提示自助打包,即可   在您的论坛上提供该社区的客户端产品.   20120620 版本:1.2.1 更新: 01.增加每日...
  • 众所周知,通过部署Lync的移动服务功能能够让我们在移动设备上(如安卓、iOS、塞班平台、Windows Phone平台)充分享受Lync带来的便捷性,但是由于手机LYNC拨打电话需要回拨,这样对于企业来说就会多产生一部分费用,...

       众所周知,通过部署Lync的移动服务功能能够让我们在移动设备上(如安卓、iOS、塞班平台、Windows Phone平台)充分享受Lync带来的便捷性,但是由于手机LYNC拨打电话需要回拨,这样对于企业来说就会多产生一部分费用,考虑到用户实际需求我们只需要为少部分用户开启手机LYNC功能。我们通过一下方法来实现此功能需求。

    1.      登录Lync前端服务器,打开“Lync Server 命令行管理程序”:“开始”-“所有程序”-Microsoft Lync Server 2010-Lync Server 命令行管理程序”

    2.      输入如下命令,此命令把默认情况下分配给所有人的全局移动策略禁用了:Set-CsMobilityPolicy Global -EnableOutsideVoice:$False -EnableMobility:$False

     

    至此所有用户都无法通过手机Lync登录。如下图

     

    3.      新建一条策略,将允许移动服务功能设置为启用。输入如下命令:
    New-CsMobilityPolicy -Identity AllowMobilityPolicy -EnableMobility $True -EnableOutsideVoice $True

    4.      将新建的策略分配给允许手机登陆的用户,输入如下命令:
    Grant-CsMobilityPolicy -Identity 某某OU\某某用户 -PolicyName AllowMobilityPolicy

    至此用户可以使用手机Lync的相关功能。
















    本文转自legendfu51CTO博客,原文链接: http://blog.51cto.com/legendfu/1068123,如需转载请自行联系原作者




    展开全文
  • 我的一般做法是:打开电脑然后用电脑连接学校的wifi,然后弹出网页,用账号登录以后,再打开电脑的热点,手机再连接上网。但是这样电脑必须一直开着。 问:有没有一种方法,用路由器去连接校园网,然后广播信号呢?
  • iOS 在使用友盟时,使用微信分享、登录必须安装微信客户端,QQ登录、QQ空间分享过程中必须安装手机QQ客户端,在未安装客户端的设备上测试会提示下载,这是不符合苹果审核规则的。这是微信及腾讯QQ互联导致的问题。 ...

    iOS 在使用友盟时,使用微信分享、登录必须安装微信客户端,QQ登录、QQ空间分享过程中必须安装手机QQ客户端,在未安装客户端的设备上测试会提示下载,这是不符合苹果审核规则的。这是微信及腾讯QQ互联导致的问题。 解决方案: 首先调用微信SDK或QQ互联SDK的方法检测是否安装微信/QQ客户端: 如果未安装客户端则隐藏对应登录或分享按钮。

    判断有没有安装QQ:

    #import <TencentOpenAPI/QQApiInterface.h>  

    if ( ![QQApiInterface isQQInstalled]) {

    //没有安装QQ

            }

     判断有没有安装微信:

    #import "WXApi.h"

    if (![WXApi isWXAppInstalled]) {

    //没有安装微信

            }

           






    展开全文
  • 在“字符验证码的创建”一文中,已经介绍了如何创建验证码,这回我们使用手机号和验证码来做登录校验: HTML页面: <form id="form" action="/login" method="post"> <div> 手机号: <input type=...

    “字符验证码的创建”一文中,已经介绍了如何创建验证码,这回我们使用手机号和验证码来做登录校验:
    HTML页面:

    <form id="form" action="/login" method="post">
        <div>
            手机号:
            <input type="text" id="phoneNumber" name="phoneNumber">
        </div>
        <div>
            验证码:
            <input type="text" id="verifyCode" name="verifyCode">
            <img th:src="@{/verifyCode}" id="realVerifyCode">
            <a href="#" onclick="changeVerify()" id="changeVerify">看不清,换一张</a>
        </div>
        <div>
            <button type="button" onclick="submit()">登录</button>
        </div>
    </form>
    

    JavaScript代码(使用了jquery.form.js):

    function submit() {
        $("#form").ajaxForm(function(r) {alert();
            if(r && r.success) {
                window.location.href = "/toIndex";
            } else {
                alert(r.msg);
            }
        })
    }
    

    登录校验:

    @Controller
    public class LoginController {
    
        // 手机号正则表达式
        private Pattern phonePattern = Pattern.compile("^0?(13[0-9]|14[5-9]|15[012356789]|166|17[0-8]|18[0-9]|19[89])" +
                "[0-9]{8}$");
        // 有效手机号
        private String[] phones = {"15000000000", "15111111111", "15222222222"};
        // 登录信息列表
        public static List<LoginMessage> loginMessageList = new ArrayList<>();
        
        @RequestMapping("/toLogin")
        public String toLogin() {
            return "login/login";
        }
    
        @RequestMapping("/toIndex")
        public String toIndex() {
            return "login/index";
        }
    
        @PostMapping("/login")
        @ResponseBody
        public JsonModel login(String phoneNumber,// 手机号
                                  String verifyCode,// 验证码
                                  HttpServletRequest request) {
            JsonModel js = new JsonModel();
            js.success = false;
            if (StringUtils.isEmpty(phoneNumber) || !phonePattern.matcher(phoneNumber).matches()) {
                js.setMsg("请输入正确的手机号");
                return js;
            }
            // 如果一周内登录过(也可以放入拦截器中校验)
            if (checkLoginedInWeek(phoneNumber, request).success) {
                js.success = true;
                return js;
            }
            if (!checkVerifyCode(verifyCode,request).success) {
                js.setMsg("请输入正确的验证码");
                return js;
            }
            // 模仿数据库查询操作
            if (!Arrays.asList(phones).contains(phoneNumber)) {
                js.setMsg("请输入正确的手机号");
                return js;
            }
            // 校验通过, 在Session中保存登录者信息
            HttpSession session = request.getSession();
            session.setAttribute("phone", phoneNumber);
            // 模仿将登录信息存入数据库
            LoginMessage loginMessage = new LoginMessage();
            loginMessage.setIp(getIP(request));
            loginMessage.setLoginTime(new Date());
            loginMessage.setPhoneNumber(phoneNumber);
            // 用于拦截器
            loginMessageList.add(loginMessage);
    
            js.success = true;
            return js;
        }
    
        // 获取客户端登录IP
        private String getIP(HttpServletRequest request) {
            String ip = request.getHeader("X-Real-IP");
            if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("X-Forwarded-For");
            }
            if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getRemoteAddr();
            }
            if (ip != null && ip.length() != 0) {
                ip = ip.split(",")[0];
            }
            return ip;
        }
    
        // 验证码校验
        private JsonModel checkVerifyCode(String verifyCode, HttpServletRequest request) {
            JsonModel js = new JsonModel();
            js.success = false;
            if (StringUtils.isEmpty(verifyCode)) {
                return js;
            }
            HttpSession session = request.getSession();
            String realVerifyCode = (String) session.getAttribute("verifyCode");
            if (StringUtils.isNotEmpty(realVerifyCode) && realVerifyCode.equals(verifyCode)) {
                js.success = true;
            }
            return js;
        }
    	// 校验是否曾经在一周内登录过
        private JsonModel checkLoginedInWeek(String phoneNumber, HttpServletRequest request) {
            JsonModel js = new JsonModel();
            js.setSuccess(false);
            String ip = getIP(request);
            for (LoginMessage item : loginMessageList) {
                // 若包含登录信息
                if (item.getPhoneNumber().equals(phoneNumber) && item.getIp().equals(ip)) {
                    Date now = new Date();
                    Date pre = item.getLoginTime();
                    // 一周内登录过
                    if (now.getTime()-pre.getTime()< 7*24*60*60*1000) {
                        // 更新session
                        request.getSession().setAttribute("phone", phoneNumber);
                        // 更新保留的登录信息
                        item.setLoginTime(now);
                        js.setSuccess(true);
                        return js;
                    }
                }
            }
            return js;
        }
    
    }
    
    // 登录信息
    class LoginMessage {
        private String phoneNumber;
        private String ip;
        private Date loginTime;
    	... ...
    }
    
    展开全文
  • 可是Dr.com有一个问题,它不同于PPPoE拨号,它只有Windows版和Linux版的客户端,那支持wlan的Symbian手机难道就不能拨号Dr.com上网了吗?当然有解决方法了。 其实Dr.com拨号客户端的功能就是连接一个本地网域内的Dr...
  • 我现在抓取到一个公众号调用微信的登录方式,取到了关键的Cookies 其他页面只要带上这个COOKIES就会认为,这次访问是在微信客户端登陆的 但是有个问题,就是这个Cookies过段时间会自动失效 因为技术有限,我找不到...
  • 客户端加密

    2016-06-30 15:30:06
     这种情况下,如何在用户登录后,服务器端获取用户登录状态并保持,就必须采用一种“握手”的方式。  每个手机都有自己的IMEI号,那么能不能通过这个标识去做认证呢?  经过试验,答案是可以。  客户端在请求服
  • 如何保证同一时刻,你的系统只能在一个客户端登陆 其实有很多这样的应用场景,就拿QQ来说,当你换个手机去登陆的时候,原来手机上的登陆将被强制退出。 Javaweb开发过程中,也可以使用类似的功能,防止同一用户多...
  • 这里的视频客户端包括PC客户端、手机客户端和TV客户端。三屏指的是PC屏、手机屏和电视屏。   一般的视频客户端的产品需求包含: 1. 内容展现:展现哪些内容,如何展现。例如首页展示、热门推荐、分类展示、详情...
  • 在集成了支付宝的测试APP中,付款时填写了自己的用户名和密码。 可怕的是之后这个信息会...   上网搜了才发现,这个SDK貌似没有接口来处理 ...登录手机支付宝钱包,账户安全里面有设备管理,删除掉设备授权即可 ...
  • 最近,在用uni-app混合方式开发app,在做微信授权登录的时候,要判断手机里面是否安装有微信客户端,如果没有安装提示用户「未安装微信客户端或版本过低」。刚开始用uniapp,很多语法都不太熟悉,心想,这个这么常用...
  • 已购微博如何登录

    2020-08-26 18:41:59
    1、手机登录微博客户端 提示手机验证:点击换个方式,则换自己的手机验证 2、登录百度网盘,关联微博。 3、电脑端微博方式扫码实现登录
  •  家也许知道,我最近被开心拉下了水,一直在新浪微博灌水,欢迎大家去拍砖: Windows Phone 7推出后不久,就买了一个三星Focus牌手机,可惜无法登录新浪微博的手机版,登录时得到这样的错误:  Can’t download ...
  • Day at Dal客户端是一个用于与智能信息亭连接的android智能手机移动应用程序。 这只是项目的一部分。 您需要安装信息亭应用程序才能运行该项目。用户可以登录到该客户端应用程序,以及在该信息亭附近购买该客户端...
  • 客户端开发设计总结

    2017-04-14 23:07:38
    hursing的博客 ...【公告】关于开启用户注册及登录手机短信验证的通知 CSDN日报20170412 ——《程序员该如何定位?看这四大方向》 博客搬家,有礼相送   客户端开发设计总结 标签: 客户端
  • 由于幼儿园安全事件频发,很多家长都要求幼儿园监控对家长开放,基于此要求,通过视频流媒体平台集成到微信公众号的方式,实现家长登录或者扫码查看视频监控是比较合适且便捷的方案。 TSINGSEE青犀视频推荐使用...
  • 公司申请企业邮箱后,会给员工每人一个邮箱来使用,而登录企业邮箱的方式有很多,下面小编以TOM企业邮箱为例,给大家分享一下企业邮箱申请后,从网页、客户端手机端、微信里分别如何登录 网页登录 从网页登录企业...
  • 其实很简单,一款免费的远控软件就能实现,今天就教大家如何用实现Windows电脑控制安卓手机的案例。被控安卓手机需要先领取安卓授权: 领完安卓授权后,就可以用向日葵远控手机了。 Step01:在PC端向日葵页面,...
  • 由于Android应用没有像web开发中的session机制,所以采用PHPSESSID的方式,是没有...这种情况下,如何在用户登录后,服务器端获取用户登录状态并保持,就必须采用一种“握手”的方式。 每个手机都有自己的IMEI...
  • 借鉴学习下:(以下是正文) ...以及如何根据解析后的用户登录信息来要求用户登录或者绑定手机号码的操作。 客户端传递用户信息方式 客户端目前会在打开第三方页面的时候,在url地址里面拼接上toekn字符串:
  • 前一篇文章"[python爬虫] Selenium爬取新浪微博内容及用户信息"简单讲述了如何爬取新浪微博手机端用户信息和微博信息。 用户信息:包括用户ID、用户名、微博数、粉丝数、关注数等。微博信息:包括转发或原创、点赞数...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 240
精华内容 96
关键字:

如何登录手机客户端