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

Android实际开发问题09_微信的授权登录

2016-05-10 16:32 609 查看
研究微信的授权登录就感觉最开始学习安卓一样,什么也不懂,做个东西十分费力(我只想说微信的文档相当乱)

正文开始:微信的授权登录,准备工作就和官网上面差不多,到官网注册开发者,掏钱.然后创建应用,

创建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()掉.官网上面写的研究了一整天就是没有任何返回值,无奈放弃了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: