Android微信登陆

前言

分享到微信朋友圈的功能早已经有了,但微信登录推出并不久,文档写的也并不是很清楚,这里记录分享一下。 

 

声明
欢迎转载,但请保留文章原始出处:) 
博客园:http://www.cnblogs.com
农民伯伯: http://over140.cnblogs.com 

 

正文

一、准备

注册、认证步骤自己来。微信开放平台:https://open.weixin.qq.com

 

二、 代码

2.1 唤起微信登录

参考官网文档:资源中心/移动应用开放/接入指南/Android接入指南 

复制代码
     private IWXAPI mWeixinAPI;

     private  void loginWithWeixin() {
         if (mWeixinAPI ==  null) {
            mWeixinAPI = WXAPIFactory.createWXAPI( this, WEIXIN_APP_ID,  false);
        }

         if (!mWeixinAPI.isWXAppInstalled()) {
            //提醒用户没有按照微信
             return;
        }

        mWeixinAPI.registerApp(WEIXIN_APP_ID);

        SendAuth.Req req =  new SendAuth.Req();
        req.scope = WEIXIN_SCOPE;
        req.state = WEIXIN_STATE;
        mWeixinAPI.sendReq(req);
    }
复制代码

WEXIN_SCOPE 这里填的snsapi_userinfo,用snsapi_base提示没权限。

WEIXIN_STATE 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验。

不出意外就能唤起微信登录了。 

 

2.2 接收微信的请求及返回值

在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,参考文档在AndroidManifest.xml注册Activity。

复制代码
public  class WXEntryActivity  extends Activity {

    @Override
     protected  void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

        handleIntent(getIntent());
    }

    @Override
     protected  void onNewIntent(Intent intent) {
         super.onNewIntent(intent);
        handleIntent(intent);
    }

     private  void handleIntent(Intent intent) {
        SendAuth.Resp resp =  new SendAuth.Resp(intent.getExtras());
         if (resp.errCode == BaseResp.ErrCode.ERR_OK) {
             // 用户同意
        }
    }
}
复制代码

注意,这里和微信的例子写的有点不一样,不过结果是一样的,这个能取到code等信息,测试返回数据如下:

复制代码
        E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_state xxx
        E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_token xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        E/WXEntryActivity(14288): onCreate...key:_mmessage_appPackage com.tencent.mm
        E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_transaction  null
        E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_lang zh_CN
        E/WXEntryActivity(14288): onCreate...key:_wxapi_command_type 1
        E/WXEntryActivity(14288): onCreate...key:_mmessage_content  null
        E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_country  null
        E/WXEntryActivity(14288): onCreate...key:_mmessage_checksum [B@426358e8
        E/WXEntryActivity(14288): onCreate...key:wx_token_key com.tencent.mm.openapi.token
        E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_url xxxxxxxxxxx
        E/WXEntryActivity(14288): onCreate...key:_mmessage_sdkVersion 570490883
        E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_errcode 0
        E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_errstr  null
        E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_openId  null
复制代码

xxx部分的内容我已经隐掉了,拿到code就能拿到access——token了,后续依据文档调用即可。

这里你可以把WXEntryActivity的theme弄成透明的,然后再弹起来一个ProgressDialog进行后续的操作(提交你自己的服务器),就能和现有的界面完全融合了。
 

 

三、注意:

3.1 获取签名必须用release包。(所以你会发现微信、微博SDK取得值是一样,所以如果已经有了微博的签名可以直接拷贝到微信使用)

 

结束

纠结到底是微信登录还是QQ登录,,,, 

转自农民伯伯博客

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要在 Android 应用中实现微信登录授权,您可以按照以下步骤进行操作: 1. 在微信开放平台注册应用:首先,您需要在微信开放平台注册一个应用,并获取到相应的 AppID。 2. 集成微信 SDK:将微信 SDK 集成到您的 Android 项目中。您可以通过在项目的 build.gradle 文件中添加 SDK 的依赖来实现。例如: ```groovy implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+' ``` 3. 配置权限和 Scheme:在 AndroidManifest.xml 文件中添加必要的权限和 Scheme。例如: ```xml <uses-permission android:name="android.permission.INTERNET" /> <activity android:name=".wxapi.WXEntryActivity" android:exported="true" android:launchMode="singleTop"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="wx{your_appid}" /> </intent-filter> </activity> ``` 4. 实现登录功能:在您的登录界面中,添加一个微信登录按钮,并在按钮的点击事件中执行登录操作。例如: ```java private IWXAPI api; // 初始化微信 API api = WXAPIFactory.createWXAPI(this, "{your_appid}", true); api.registerApp("{your_appid}"); // 微信登录按钮点击事件 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SendAuth.Req req = new SendAuth.Req(); req.scope = "snsapi_userinfo"; // 请求用户授权时向用户显示的可进行授权的列表 req.state = "your_state"; // 自定义字段,用于回调时识别请求 api.sendReq(req); // 发送授权请求 } }); ``` 5. 处理回调结果:在您的项目中创建一个名为 "wxapi" 的包,并在该包下创建一个名为 "WXEntryActivity" 的类,用于处理微信登录授权的回调结果。例如: ```java public class WXEntryActivity extends Activity implements IWXAPIEventHandler { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); api.handleIntent(getIntent(), this); // 处理微信回调结果 } @Override public void onReq(BaseReq baseReq) { // 处理微信请求结果(如分享等) } @Override public void onResp(BaseResp baseResp) { // 处理微信登录授权结果 if (baseResp instanceof SendAuth.Resp) { SendAuth.Resp resp = (SendAuth.Resp) baseResp; // 获取授权结果 String code = resp.code; String state = resp.state; // TODO: 处理登录授权结果 } finish(); // 关闭当前 Activity } } ``` 通过以上步骤,您就可以在 Android 应用中实现微信登录授权了。请记得将 `{your_appid}` 替换为您在微信开放平台注册应用时获取到的 AppID。希望对您有所帮助!如有任何问题,请随时向我提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值