研究微信的授权登录就感觉最开始学习安卓一样,什么也不懂,做个东西十分费力(我只想说微信的文档相当乱)
正文开始:微信的授权登录,准备工作就和官网上面差不多,到官网注册开发者,掏钱.然后创建应用,
创建android应用需要两个参数:
一个是包名(AndroidManifest文件中的数据package)
一个是签名:可以通过软件获取(详见下面附录)
然后就可以获取一个appid和appsercet.
按照官网所讲,appsercet是很重要的东西,最好不要放到客户端,也就是我们的app中,如果你要是集成三方此事就另当别论了
我就只做了前面,也就是通过appid进行授权,获取code之后发到服务器,剩下的事情服务器自行完成.
下面主要说下如何获取code.
1.发送请求
<span style="font-size:12px;">private String APPID = "wx*************"; public static IWXAPI iwxapi; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //这里是最开始注册的 iwxapi = WXAPIFactory.createWXAPI(this, APPID); iwxapi.registerApp(APPID); findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //发送请求 SendAuth.Req req = new SendAuth.Req(); req.scope = "snsapi_userinfo"; req.state = "wechat_sdk_demo_test"; iwxapi.sendReq(req); } }); }</span>上面的东西都和官网和百度出来的差不多.然后就是请求做完了,需要回调了
2.回调
这个地方是非常注意的,哪怕你使用第三方也必须十分注意,是在你的包目录下面,新建一个包叫做"wxapi".然后在里面创建一个继承了Activity的WXEntryActivity.最后在配置文件中声明并且加上"exported="true""这个,上面的意思也就是WXEntryActivity的路径必须是包名.wxapi.WXEntryActivity
下面是我的WXEntryActivity,并没有像官网所说实现什么IWXEVENTHANDLER.
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) { <span style="color:#FF0000;">//在这里就可以获取到微信返回的东西了,想要怎么处理就在这写好就可以了</span> }<pre name="code" class="html"> finish();}} 最后说明下,为了不展现WXEntryActivity,设置activity的主题为@android:style/Theme.Translucent,并且finish()掉.官网上面写的研究了一整天就是没有任何返回值,无奈放弃了