Android接入微信sdk,使用微信授权

接入微信sdk,进行授权,第一个最基本也是最重要的步骤,需要注意应用的包名、应用签名(如果不知道的可以使用新浪签名工具查看,或者微信提供的工具),app id (微信申请成功之后可以获得) 三者必须要与微信上申请的一致,否者将会无法成功调起微信。

1、在自己的项目上创建一个按钮



2、新建一个Constans.java的类,存放微信支付相关的参数

public class Constants {

    public static final String APP_ID = "wxxxxxxx"; //替换为申请到的app id

}

3、在MyApplication.java类里面进行实例化



4、在登录页面注册点击事件 , 跳转微信授


scope 因为是获取用户个人信息所以固定填 snsapi_userinfo

state 可填可不填的参数,按官方建议最好填写,可用于防止csrf攻击(跨站请求伪造攻击)


5、这时候就可以调起微信授权了,但是如果需要得到微信返回的结果,还需要以下的步骤

1)在包名下新增wxapi文件夹(这个文件夹名字是微信官方规定的,必须一致)


2)在wxapi文件夹下新增继承于Activity并实现IWXAPIEventHandler接口的WXEntryActivity类(这个类名是微信官方规定的,必须一致)



if(baseResp instanceof SendAuth.Resp){

    SendAuth.Resp newResp = (SendAuth.Resp) baseResp;

    //获取微信传回的code

    final String code = newResp.code;

}

获得的code就是微信授权成功后给的临时票据,可以根据code获取相关的用户 access_token 和 openid , 然后根据 access_token 和 openid 获取用户信息

6、在AndroidManifest.xml中对WXEntryActivity进行配置

1)增加权限


2)增加WXEntryActivity的配置


其中android:exported="true" 必须加上,否则无法接收回调

7、编译生成运行,即可发起微信登录并得到微信返回。

如果还是不行,注意是否以下问题引起:

1)app id是否正确?

2)包名是否和申请时填写的一致?

3)应用签名是否和申请时填写的一致?(可以用签名生成工具对比一下)通常可能发生的情况是,申请用的签名包,调试用的非签名包,这种情况很常见。

4)WXEntryActivity.java文件的位置是否正确

5)AndroidManifest.xml中的配置是否正确?

6)公众号、移动应用之间统一帐号的话,可利用unionID来满足需求,因为微信返回的openid是根据app id 进行生成的,这样就导致了如果是H5授权那么和Android得到的id不一致

最后附上微信开放平台官方地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317851&token=&lang=zh_CN

猜你喜欢

转载自blog.csdn.net/qq_34829270/article/details/80110727