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

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

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

创建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()掉.官网上面写的研究了一整天就是没有任何返回值,无奈放弃了 
 

你可能感兴趣的:(Android实际开发问题09_微信的授权登录)