Android第三方登录--微信登录

最近项目需要接入微信登录,以前没有做过,因此记录一下。

准备条件

  1. 注册微信开放平台
  2. 创建移动应用,获取appid和appsecret
  3. 开发者资格认证,需要300¥
  4. 到资源中心的Android资源下载 页面下载所需要的资源,其中签名生成工具是创建移动应用是生成签名时使用的。

开始

微信官方提供了较全的文档资料,可以在资源中心查看详细的接入文档。

1.将开发工具包的libammsdk.jar文件导入项目中,并添加所需要的权限

<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"/>

2.发送请求,在需要请求授权的地方调用如下方法:

//注册App到微信
IWXAPI api = WXAPIFactory.createWXAPI(mContext,AppConfig.WX_APP_ID,true);
api.registerApp(AppConfig.WX_APP_ID);
final SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
//req.state = "wechat_sdk_demo_test";
api.sendReq(req);

3.在包名目录下创建一个wxapi的包,并在其中创建一个WXEntryActivtity.java类,继承自Activity,同时实现IWXAPIEventHandler接口,当微信发送请求到你的应用,将通过IWXAPIEventHandler接口的onReq方法进行回调,类似的,应用请求微信的响应结果将通过onResp回调。

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {

    // IWXAPI 是第三方app和微信通信的openapi接口
    private IWXAPI api;

    @Override
    public void initVariables() {
        // 通过WXAPIFactory工厂,获取IWXAPI的实例
        api = WXAPIFactory.createWXAPI(this, AppConfig.WX_APP_ID, false);
        api.registerApp(AppConfig.WX_APP_ID);
        api.handleIntent(getIntent(), this);
    }
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);

        setIntent(intent);
        api.handleIntent(intent, this);
    }

    // 微信发送请求到第三方应用时,会回调到该方法
    @Override
    public void onReq(BaseReq req) {

    }

    // 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
    @Override
    public void onResp(BaseResp resp) {}
}

4.配置WXEntryActivity,设置exported属性为true

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

5.接下来便可以在onResp()方法中获取用户的信息了。

String code = (SendAuth.Resp) resp).code;//获取code
//通过请求下面的链接获取json,提取出access_token和openid
https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + AppConfig.WX_APP_ID + "&secret=" + AppConfig.WX_APP_SECRET + "&code=" + code + "&grant_type=authorization_code;
//通过请求下面的链接可以获得用户信息的json数据
https://api.weixin.qq.com/sns/userinfo?access_token=" + wxresp.getAccess_token() + "&openid=" + wxresp.getOpenid() + "&lang=zh_CN";

获取到用户数据后,再将其发送到服务端保存即可,之后与普通登录方式相同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值