您的位置:首页 > 移动开发 > 微信开发

Android微信登陆

2015-08-20 10:50 507 查看
转自农民伯伯: 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登录,,,,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: