美文网首页Androidandnroid
android微信第三方登录

android微信第三方登录

作者: tea9 | 来源:发表于2016-09-08 10:50 被阅读4065次

    github测试地址 https://github.com/shaomiao/AndroidWechatTest
    微信SDK下载地址
    https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1
    微信开放平台
    https://open.weixin.qq.com/
    微信api
    https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=dcf5c640a7da2e579f50e32e282eb1bc1f384c0b&lang=zh_CN

    开始接入微信登录

    1.申请你的AppID
    注意:

    包名正确(重要)
    签名正确(重要)

    微信提供的签名生成工具
    把包名添加上去就可以获取签名
    注意:把要获取签名的应用安装在手机上
    https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android2.apk
    2.下载开发工具包
    https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&lang=zh_CN
    3.在项目中引入开发包

    在项目中引入开发工具包
    4.使用开发工具包
    下面代码都是在MainActivity中
    [1]注册微信
    private static final String APP_ID="你的appid";
    private IWXAPI api;
    private void regToWx(){
        api= WXAPIFactory.createWXAPI(this,APP_ID,true);
        api.registerApp(APP_ID);
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          //注册微信
          regToWx();
    }
    

    [2]登录微信

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //注册微信
        regToWx();
        findViewById(R.id.wechat_login).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //登录微信
                final SendAuth.Req req = new SendAuth.Req();
                req.scope = "snsapi_userinfo";
                req.state = "wechat_sdk_demo_test";
                api.sendReq(req);
            }
        });
    }
    

    5.下面是最重要的一步。。。。
    [1]建包
    注意:要在你的包名下新建 wxapi 包
    你的包名.wxapi

    你的包名.wxapi

    [2]建立与微信通讯的activity
    在wxapi下新建activity
    WXEntryActivity
    [3]在AndroidManifest.xml中添加权限

    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    

    [4]在AndroidManifest.xml中添加activity注册

    <activity android:name=".wxapi.WXEntryActivity"
        android:label="@string/app_name"
        android:exported="true"
        android:launchMode="singleTop"
        >
    </activity>
    

    [5]在WXEntryActivity中继承Activity并实现IWXAPIEventHandler接口

    实现IWXAPIEventHandler接口

    重写onCreate方法
    在onCreate中需要重新注册一下微信
    要不微信不执行回掉


    重写onCreate方法

    实现onReq和onResp方法
    使用okhttp获取微信的openid和用户信息
    http://www.jianshu.com/p/c92e1134448d

    在onResp中可以获取code
    通过code参数加上AppID和AppSecret等,通过API换取access_token;
    通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
    详情请参照
    https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317851&token=dcf5c640a7da2e579f50e32e282eb1bc1f384c0b&lang=zh_CN

    onReq和onResp方法

    相关文章

      网友评论

      • 51b6eb550d85:感谢分享,想问一下测试版本和生产版本的包名和SHA1签名不一样,怎样拿到测试版本的qppsecret呢?
        51b6eb550d85:@一盅清茶 谢谢:smile:
        tea9:写微信登录已经好长时间了我要是没记错的话AppSecret 和AppId是在微信后台获取的把 应该只有一个不分测试版本 我现在也记不太清了 要是微信调用不起来 看一下这个
        希望能帮到你 http://www.jianshu.com/p/13e43351c974
      • 夏沐尧:请问一下,为什么我唤醒的登陆是白屏--
        夏沐尧:@一盅清茶 找到原因了,包名和我当时在微信平台得不一样
        tea9:@尧沐
        检查签名是否正确
        包名是否与微信后台配置的一致
        检查是否添加权限
        检查代码 是否在初始化时注册微信 是否正确发送请求
        微信支付调用起来没有回调:
        查看包名是否正确
        类名是否正确
        在AndroidManifest.xml是否注册activity

        (包名正确签名正确)就重新安装微信客户端 和重新安装 测试项目
      • tea9:如果用微信例子的签名那包名应该也要改成和和例子里一样的
      • 枫灬叶:感谢分享,像问一下如果没有签名,拿微信例子中的那个签名,去微信登录是一点反映都没有,还是有错误提示呀,我的代码是按你写的,不过签名没申请,

      本文标题:android微信第三方登录

      本文链接:https://www.haomeiwen.com/subject/gissettx.html