精华内容
下载资源
问答
  • 使用微信登录APP

    千次阅读 2016-05-14 18:52:32
    现在利用第三方平台登录APP已经是很普通的方式,现在记一下利用微信登录APP的过程。 上面的图片是描述使用微信登录的过程: 1、用户点击第三方开发的APP微信登录按键, 2、APP使用申请得的APPID与微信联系 3...

    关注微信号,发送demo获取github上的demo吧!





    现在利用第三方平台登录APP已经是很普通的方式,现在记一下利用微信登录APP的过程。


    上面的图片是描述使用微信登录的过程:

    1、用户点击第三方开发的APP微信登录按键,

    2、APP使用申请得的APPID与微信联系

    3、微信平台会向APP发送一个code

    4、APP利用获得的code和APPID、secrect向微信平台获取access_token、openid

    5、APP使用获取得的access_token、openid获取用户的基本信息,如昵称、性别、国家等。


    具体做法

    第一步:获取APPID和secrect

               在微信开发平台创建应用,填写APP的包名和签名(签名不是SHA1,要使用第三方工具安装到手机输入APP的包名获取),审核通过后会有APPID和secrect.

    第二步:环境集成

                从微信官网下载SDK集成到项目libs中,并在包名路径下创建名为xwapi的文件夹

    第三步:在wxapi内创建WXEntryActivity

               在wxapi内创建WXEntryActivity,并implements IWXAPIEventHandler,

    在manifest中加入android:exported="true",如

    <activity

                android:name=".wxapi.WXEntryActivity"

                android:exported="true"></activity>

    第四步:在有微信登录的Activity加入接口信息

              在有微信登录的Activity加入接口信息,一般都是在weclome界面或login界面,加入。如:

    public class MainActivity extends AppCompatActivity {
    public static IWXAPI api;
       private String WXAPP_ID="";//申请到的APPID

       @Override
       protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
           api= WXAPIFactory.createWXAPI(this,WXAPP_ID,true);
           final SendAuth.Req req = new SendAuth.Req();
           req.scope="snsapi_userinfo";
           req.state="none";
           api.sendReq(req);
           //


       }
    }

    第五步:在WXEntryActivity实现对接功能

            第四步与微信通信之后,会弹出一个授权窗口,提醒用户是否使用微信登录APP,点击确定之后微信会回调WXEntryActivity中的onResp方法,把code传为BaseResp传过来,我们就可以用这个code一步步获取accesstoken,再获取用户信息。如:

    public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
    private static final int TIMELINE_SUPPORTED_VERSION = 0x21020001;
       // IWXAPI 是第三方app和微信通信的openapi接口
       //private IWXAPI api;
       private static final int RETURN_MSG_TYPE_LOGIN = 1;
       private static final int RETURN_MSG_TYPE_SHARE = 2;
       private String code;
       private String tokenJson;//access_token串
       private boolean accesss_token_effective;//access_token是否有效
       private String openId;//openId
       private String refresh_token;
       private String access_token="";
        private String unionid;
       private String userInfoJson;//用户信息json串
       private String WXAPP_ID="";//申请到的APPID
       private String WXAppSecret="";//申请到的Secret



       @Override
       protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
          // setContentView(R.layout.activity_wxentry);
           MainActivity.api.handleIntent(getIntent(), this);


       }

    @Override
       public void onReq(BaseReq req) {
    Toast.makeText(this, "onReq方法被调用!", Toast.LENGTH_LONG).show();
           switch (req.getType()) {
    case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:
    goToGetMsg();
                   break;
               case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:
    //goToShowMsg((ShowMessageFromWX.Req) req);
                   break;
               default:
    break;
           }

    }

    private void goToGetMsg() {
    Intent intent = new Intent(this, MainActivity.class);
           intent.putExtras(getIntent());
           startActivity(intent);
           finish();
       }



    @Override
       public void onResp(BaseResp baseResp) {
    Toast.makeText(this, "onResp方法被调用!", Toast.LENGTH_LONG).show();
           int result = 0;

           //String id=baseResp.openId;
           Log.e("ErrorCode", "结果---" + baseResp.errCode);
           switch (baseResp.errCode) {
    case BaseResp.ErrCode.ERR_OK:

    switch (baseResp.getType()) {
    case RETURN_MSG_TYPE_LOGIN:
    //拿到了微信返回的code,立马再去请求access_token
                           code = ((SendAuth.Resp) baseResp).code;
                           Log.e("ErrorCode", "code---" + code);
                           getAccess_token(code);

                           //获取用户信息
                           getUserInfo();


                           break;

                       case RETURN_MSG_TYPE_SHARE:
    //AppData.showToast("微信分享成功");
                           Toast.makeText(this, "微信分享成功", Toast.LENGTH_LONG).show();
                           finish();
                           break;
                   }

    break;
               case BaseResp.ErrCode.ERR_USER_CANCEL:

    break;
               case BaseResp.ErrCode.ERR_AUTH_DENIED:

    break;
               default:

    break;
           }



    }

    /**
        * 通过code获取access_token
        * @param code
        * @return
        */
       private String getAccess_token(String code) {
    final String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + WXAPP_ID + "&secret=" +WXAppSecret +
    "&code=" + code + "&grant_type=authorization_code";
           new Thread(new Runnable() {
    @Override
               public void run() {
    String result =getURLResponse(url);
                   tokenJson = result;
                   Log.e("tokenJson", "tokenJson====" + tokenJson);
                   try {
    JSONObject jsonObject = new JSONObject(result);
                       access_token = jsonObject.getString("access_token");
                       refresh_token = jsonObject.getString("refresh_token");
                       openId = jsonObject.getString("openid");
                       unionid = jsonObject.getString("unionid");
                       Log.e("access_token", "access_token====" + access_token);
                       Thread.currentThread().sleep(1000);//毫秒
                   } catch (JSONException ex) {
    ex.printStackTrace();
                   } catch (InterruptedException ex) {
    ex.printStackTrace();
                   }


    }
    }).start();

           return tokenJson;
       }

    /**
        * 由于access_token有效期为两小时,所以进行下一步操作前最好进行一次检查
        * 判断token是否有效
        *
        * @param access_token
        * @param openId
        * @return
        */
       private boolean checkToken(String access_token, String openId) {
    final String url = "https://api.weixin.qq.com/sns/auth?access_token=" + access_token + "&openid=" + openId;

           new Thread(new Runnable() {
    @Override
               public void run() {
    String result = getURLResponse(url);
                   try {
    JSONObject jsonObject = new JSONObject(result);
                       if (jsonObject.getString("errcode").equals("0")) {
    //返回0表示accesss_token有效
                           accesss_token_effective=true;
                       }else if(jsonObject.getString("errcode").equals("40003")){
    //返回40003表示accesss_token无效
                           accesss_token_effective=false;

                       }
    } catch (JSONException ex) {
    ex.printStackTrace();
                   }

    }
    }).start();
           return accesss_token_effective;
       }


    /**
        * 刷新重新获取accesss_token
        * @return
        */
       private String getRefresh_token(){
    final String url = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid="+WXAPP_ID+"&grant_type=refresh_token&refresh_token="+refresh_token;

           new Thread(new Runnable() {
    @Override
               public void run() {
    String result = getURLResponse(url);
                   try {
    JSONObject jsonObject = new JSONObject(result);
                      access_token=jsonObject.getString("access_token");
                   } catch (JSONException ex) {
    ex.printStackTrace();
                   }

    }
    }).start();

           return access_token;
       }

    private String getUserInfo() {
    //access_token为空,延时500毫秒,再回调自己,等上个线程获取access_token为空
           //此处还应该判断
           if (access_token.equals("")) {
    Timer timer=new Timer();//实例化Timer类
               timer.schedule(new TimerTask(){
    public void run(){
    System.out.println("退出");
                       this.cancel();}},500);//五百毫秒
               getUserInfo();
           } else {
    final String url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openId;

           new Thread(new Runnable() {
    @Override
               public void run() {
    String result = getURLResponse(url);
                   userInfoJson = result;
                   //打出用户信息
                   Log.e("userInfo", "userInfo====" + userInfoJson);

               }
    }).start();
       }
    return userInfoJson;
       }


    /**
        * 获取指定URL的响应字符串
        * @param urlString
        * @return
        */
       public String getURLResponse(String urlString){
    HttpURLConnection conn = null; //连接对象
           InputStream is = null;
           String resultData = "";
           try {
    URL url = new URL(urlString); //URL对象
               conn = (HttpURLConnection)url.openConnection(); //使用URL打开一个链接
               conn.setDoInput(true); //允许输入流,即允许下载
               conn.setDoOutput(true); //允许输出流,即允许上传
               conn.setUseCaches(false); //不使用缓冲
               conn.setRequestMethod("GET"); //使用get请求
               is = conn.getInputStream();   //获取输入流,此时才真正建立链接
               InputStreamReader isr = new InputStreamReader(is);
               BufferedReader bufferReader = new BufferedReader(isr);
               String inputLine = "";
               while((inputLine = bufferReader.readLine()) != null){
    resultData += inputLine + "\n";
               }

    } catch (MalformedURLException e) {
    // TODO Auto-generated catch block
               e.printStackTrace();
           }catch (IOException e) {
    // TODO Auto-generated catch block
               e.printStackTrace();
           }finally{
    if(is != null){
    try {
    is.close();
                   } catch (IOException e) {
    // TODO Auto-generated catch block
                       e.printStackTrace();
                   }
    }
    if(conn != null){
    conn.disconnect();
               }
    }

    return resultData;
       }





    }
    
    
    
    
    展开全文
  • mac os无法登录appstore的解决方法

    千次阅读 2020-02-13 23:12:46
    mac笔记本上登录appstore时,输入密码是正确的,但是总是登录不上,手机端能收到验证码。 二、解决方法 最后发现是mac的版本太老,os x yosemite10.10.5 不支持弹出验证码输入框,需要把验证码添加到apple ID的...

     

    一、问题

    mac笔记本上登录appstore时,输入密码是正确的,但是总是登录不上,手机端能收到验证码。

     

    二、解决方法

    最后发现是mac的版本太老,os x yosemite10.10.5

    不支持弹出验证码输入框,需要把验证码添加到apple ID的密码后面一同输入就可以了。

     

     

    引用

    https://www.feng.com/post/10724482

    展开全文
  • 黑苹果10.15.3无法登录appstore 已解决en0,但是不完美

    万次阅读 热门讨论 2020-03-27 18:09:19
    刚安装完的时候是可以正常登录appstore的,重启之后就不行了 appstore具体表现就是反反复复要求输入密码,但是又没有一次登录成功 我看了很多博客,确认是因为网络适配器(Ethernet Adapter)的原因,好像是因为app...

    还是不太推荐小白使用(涉及到修改关机文件,在里面添加了命令,操作失误会导致无法正常关机),而且我觉得这个方法效果不是很好。我已经放弃了这个方法。
    先描述一下我遇到的情况:

    • 系统偏好设置里面的appid正常登录
    • icloud、itunes正常登录
    • 刚安装完的时候是可以正常登录appstore的,重启之后就不行了
    • appstore具体表现就是反反复复要求输入密码,但是又没有一次登录成功

    我看了很多博客,确认是因为网络适配器(Ethernet Adapter)的原因,好像是因为appstore只认en0,我也试了很多种办法了,对于黑果我了解的东西都停留在表面所以也没考虑网卡内建之类的,后来看到了简单粗暴的办法(偶尔还是会不行):

    1. 第一步,先把网络里面的这些配置多余的删掉,只留下一个就好然后点击应用,这一步只是为了好看一点。。。

    在这里插入图片描述

    1. 第二步,找个地方新建一个名字为shutdown(没有后缀)的文本,把以下代码复制保存到文本里面也可以直接下载我的上传的文件,因为后面要用它去替换原来的/sbin/shutdown文件
    #!/bin/sh
    rm -rf /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
    exec /sbin/shutdown.origin "$@"
    
    /**
    * 下面这段话不复制
    * 这里删掉的文件不会影响使用,里面记录的是网络适配器的配置
    * 删了之后系统重启后会重新创建,这个脚本每次关机前执行一次
    * 这样每次开机就都是en0了
    * 这个操作是在一篇博客上面找到的,但是我实在找不到原地址了,就写不了转载说明了,有看到的老哥可以在下面评论我会补上的,谢谢!
    */
    
    
    1. 第三步,打开终端输入如下命令
    cd /sbin
    sudo mv shutdown shutdown.origin
    //如果这一步不能执行的话,请输入sudo mount -uw / 然后在重试一下
    sudo mv shutdown文件的完整目录 /sbin
    /**
    * 这个目录怎么写举例:
    * 我创建在桌面,我的用户名是frontman,那么完整目录就是:
    * /Users/frontman/Desktop/shutdown
    */
    sudo chmod 777 shutdown
    

    如果出错会导致无法正常关机,因为shutdown文件本身是关机命令,我的目的是为了在关机前清空NetworkInterface恢复的办法就是 用bash进入到刚刚打开的那个目录下输入
    mv shutdown shutdown.error(这个名字任意取一个) mv shutdown.origin shutdown

    这里的shutdown.origin是上面做的备份

    1. 第四步,重启。快去试试有没有效果吧,有效的话记得给我点个赞😄。
    展开全文
  • 修改DNS还是不能登录app store

    千次阅读 2019-02-21 16:33:12
    1.打开“终端”; 2.复制如下代码,主要不要作任何更改,不要有多余的哪怕空格出现:defaults delete com.apple.appstore.commerce Storefront 3.回车; 4.重启后,再利用AppleID登录appstore即可;...

    1.打开“终端”;

    2.复制如下代码,主要不要作任何更改,不要有多余的哪怕空格出现:defaults delete com.apple.appstore.commerce Storefront

    3.回车;

    4.重启后,再利用AppleID登录appstore即可;

    如若不行参考苹果官方解决方法:https://support.apple.com/zh-cn/HT201400

    展开全文
  • MacOS无法登录App Store修复

    万次阅读 2017-03-16 10:44:04
    MacOS无法登录App Store修复 2017-03-10 21:13:39 by:SemiconductorKING    先上图:  惨红色的提示信息,把你拒之App Store门外,但是对之放弃、不与之斗争不是我们的节奏,请看破敌攻略:      1....
  • 伪造smbios设备信息 原文网址:... 前提: 网络正常,DNS 正常,网页能登录 https://www.apple.com ...适用于,登录 osx 中登录 app store 一直在转圈的情况
  • 黑苹果无法登录Appstore

    千次阅读 2015-06-22 07:59:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • MAC 中使用360WIFI无线网卡登录APP Store提示“会跳出来amd-action authenticate: sp”错误 改下WIFI网络的DNS试试,把DNS改成8.8.4.4 和 114.114.114.114 步骤如下: 1、打开网络设置=》高级 2、设置DNS如...
  • private void initFirst() { if (SpUtils.getBoolean("isFirst", false)) { return; } TextView tv1 = new TextView(this); tv1.setText(getResources().getString...
  • uni-app授权登录功能的实现,包括微信授权、QQ授权

    万次阅读 热门讨论 2019-04-24 14:28:37
    今天讲述一下购靓号平台APP的两种常用授权登录方式,废话不多说,公众号搜索【购靓号】自行体验。个人引以为豪的作品。哈哈哈 首先是APP微信授权登录 APP微信授权需要到微信开放平台申请,在hbuilderX配置APP SDK...
  • 请使用您的 Apple ID 登录 App Store Connect。如果您是具有“帐户持有人”职能的用户,请使用您用于加入“Apple 开发者计划”的 Apple ID 登录并添加其他用户至您的 App Store Connect 组织。 请前往 App ...
  • 如何监控用户登录app的时长?有人遇见过这样的需求吗?求解答
  • H5嵌入APP的联合登录的解决方案

    千次阅读 2019-07-03 15:14:31
    进入H5页不再进行登录,所以我们的H5需要拿到用户在商户的账户的标识id(暂时称之PartnerID),然后与我们的产品的账户标识id(暂时称之H5ID)进行一个关联,这样在用户登录APP后,我们能够通过PartnerID去查询关联...
  • Web登录 ** 1、 写一个登录界面,并为其写上js 2、 后端代码(python) #进入登录界面 @app.route("/") def login(): return render_template('login.html') #获取表单提交的数据,并返送结果 @app.route("/...
  • App登录状态维持

    千次阅读 2016-09-19 13:39:20
    目前APP大都支持长登录,就是用户登录一次后,如果用户没有主动注销、清除APP缓存数据或卸载APP,就在一段时间内或一直保持登录状态。一般情况下,有以下三种方式: 利用Token实现 APP登录成功后,服务器以...
  • Mac电脑app store登录不了的问题

    万次阅读 2018-06-07 14:03:34
    连接到apple id 服务器时出错 有的说要翻墙,有的说要改DNS我试了都没效果...同时也能登录app Store了!好久没有写博客,之前gitpages上的域名到期了,还是继续在这里记东西吧。有时间把之前的博客也搬过来。:)...
  • 大神求助,我在登录APP的时候将cookie保存到临时文件中,在下一次进入这个APP的时候我将cookie读出来放到联网的header中实现自动登录,有时候登录是成功了,但是有时候发现服务器返回是成功了,但是貌似服务器得到的...
  • 微信授权登录第三方app遇到的问题

    万次阅读 2015-10-22 15:17:20
    最近公司app要求实现微信授权登录app的功能,我是个应届毕业生,工作经验不是很足,但是,开发任务来了,我也不会拖泥带水,去了微信开放平台注册了公司的app,得到了appid等相关信息,回到程序里面,我导入微信相关...
  • 官网: ...客户端如何使用登录:...app授权登录流程: 1服务端先拿到 App 端 调用 支付宝 SDK 所需要的 infoStr 2App 端 通过 infoStr 获得用户 授权 code 3服务端通过 授权 code 拿到请...
  • app保持登录状态

    千次阅读 2019-03-04 17:13:12
    APP保持登录的原理是什么? token。 token写入数据库的user表中。 也就是:token机制完成登录状态保持/身份认证 APP是怎么将token存入本地的?原理是什么?(就像sessionId存入浏览器的cookie一样。cookie其实也是存...
  • 分享给大家供大家参考,具体如下:使用微信登录APP,免去注册过程,现在已经有很多的类似应用了。集成该功能过程不复杂,但还是有一些地方需要注意的。开始之前,需要做下面的准备工作。1、到微信开放平台注册你的...
  • Android APP登录界面

    千次阅读 2017-11-10 14:17:19
    今天分享的是,17个优秀的APP登录界面UI设计效果欣赏,风格都非常的前卫,有很强的现代感,有的个性十足,APP登录界面好设计也不好设计,好设计的地方是元素少容易排版,不好设计的地方是要做个性化很难,而今天分享...
  • Android App 安全登录认证解决方案

    万次阅读 多人点赞 2018-03-07 17:16:59
    基于Android App 安全登录认证解决方案近几年移动互联网的高速发展,智能手机的使用用户呈现爆炸性增长,手机终端上的App 种类繁多,大多数App 都需要与后台系统进行交互,交互的第一步需要进行登录认证,过于简单的...
  • JAVA实现WEB端实现app扫码登录

    万次阅读 2020-05-19 19:57:46
    扫码登录: 我们经常用的一些app,如qq和淘宝,天猫等这一类的软件。而开发这些app的企业,都有他们相对应的网站。为了让用户在使用他们的网站时,登录更加方便和安全。企业提供了,使用手机,扫一扫,就可以登录的...
  • App登录方式和测试重点总结

    千次阅读 2018-11-04 22:01:21
    所有软件测试基础课程中,都会拿注册登录做例子,网上...对于同时支持多种登录方式的APP,测试时除了考虑每种方式是否能够登录成功以外,特别需要考虑不同登录方式的优先级、对于用户习惯登录方式的设置和记忆、各种...
  • APP微信授权登录 APP微信授权需要到微信开放平台申请,在hbuilderX配置APP SDK中微信登录的appId,另外需要跟小程序、公众号授权账号互通的话也需要在微信开放平台申请。 uni.login({ provider: 'weixin', ...
  • Ionic移动app开发:登录实现 对于一款App必然会有一个登录界面,下面介绍一下使用ionic创建一个登录的过程: 创建ionic project ionic start projectname template 安装依赖 –进入project 文件夹 ...
  • uni-app中授权微信登录app

    千次阅读 2020-08-17 16:54:32
    2.填写上面的信息需要在微信公众平台申请一个应用,获取相应的appid和appsecret; 3.代码 appLogin: function() { uni.getProvider({ service: 'oauth', success: function(res) { //支持微信、qq和微博等 ...
  • pc端使用的是shiro+session+redis实现用户登录app端应该怎么实现呢,求指教,最好有demo

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 347,214
精华内容 138,885
关键字:

如何登录app