Mob集成微信登陆

这几天集成了微信登陆,有点麻烦,刚开始我集成的ShareSDK的分享,然后继承友盟的微信登陆,可是好像发生点冲突,所以我又重新继承了ShareSDK的微信登陆。现在我说一下步骤吧!
下面的步骤我是获取微信的AppID和AppSecret
1. 先到微信开放平台(https://open.weixin.qq.com/)申请一个账户(最好让公司申请一个账户,因为后面还要申请开发者资质,需要花钱)。
2. 申请完账户以后,到管理中心,创建一个新的应用,然后会填写名称,介绍等等乱七八糟的,然后会让你上传两个应用图标,点击下一步就行,然后会填写官网,应用下载地址(这里可以为空),还有应用签名等等,这里我会说一下应用签名,应用签名是指你的App打包后安装在手机上会生成一个MD5的值,你将应用安装到手机上后,可以利用一个工具获取(工具地址:https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android2.apk)。
3. 接下来就是等审核通过,大概七天以内吧,通过后你还得申请开通App登陆功能,需要花钱的。
4. 接下来按照ShareSDK的第三方登陆的步骤走就行了,里面主要代码说明不够详细,你需要参照一下DEMO(DEMO的地址为https://github.com/ShareSDKPlatform/ThirdPartyLoginDemo),主要是参照下面的代码,将下面的代码复制粘贴到登陆界面就OK了

package cn.sharesdk.demo.tpl;

import java.util.HashMap;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler.Callback;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.wechat.friends.Wechat;

import com.mob.tools.utils.UIHandler;

public class LoginActivity extends Activity implements Callback, 
        OnClickListener, PlatformActionListener {


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ShareSDK.initSDK(this);

        setContentView(R.layout.third_party_login_page);
        findViewById(R.id.wechat).setOnClickListener(this);
        //findViewById(R.id.tvQq).setOnClickListener(this);
    }

    public void onClick(View v) {
        switch(v.getId()) {
            case R.id.wechat: {
                Platform weixinfd = ShareSDK.getPlatform(Wechat.NAME);
                weixinfd.setPlatformActionListener(this);


                if (weixinfd.isValid ()){
                    weixinfd.removeAccount();
                }

                weixinfd.showUser(null);

            }

        }
    }

    // 回调
        @Override
        public void onCancel(Platform platform, int action) {
            Message msg = new Message();
            msg.what = MSG_ACTION_CCALLBACK;
            msg.arg1 = 3;
            msg.arg2 = action;
            msg.obj = platform;
            UIHandler.sendMessage(msg, this);
        }

        @Override
        public void onComplete(Platform platform, int action,
                HashMap<String, Object> res) {
            Message msg = new Message();
            msg.what = MSG_ACTION_CCALLBACK;
            msg.arg1 = 1;
            msg.arg2 = action;
            msg.obj = platform;

            UIHandler.sendMessage(msg, this);
            System.out.println(res);
            //获取资料
            platform.getDb().getUserName();//获取用户名字 
            platform.getDb().getUserIcon(); //获取用户头像
            String token = platform.getDb().getToken();
            System.out.println("token==="+token);

            String unionid = (String) res.get("unionid");
            System.out.println("unionid==="+unionid);
        }

        @Override
        public void onError(Platform platform, int action, Throwable t) {
            t.printStackTrace();

            Message msg = new Message();
            msg.what = MSG_ACTION_CCALLBACK;
            msg.arg1 = 2;
            msg.arg2 = action;
            msg.obj = t;
            UIHandler.sendMessage(msg, this);

            // 分享失败的统计
            ShareSDK.logDemoEvent(4, platform);
        }

    // 回调handleMessage
    @Override
    public boolean handleMessage(Message msg) {
        switch (msg.arg1) {
        case 1: {
            // 成功
            Toast.makeText(LoginActivity.this, "成功", Toast.LENGTH_SHORT).show();
        }
            break;
        case 2: {
            // 失败
            Toast.makeText(LoginActivity.this, "失败", Toast.LENGTH_SHORT).show();

            String expName = msg.obj.getClass().getSimpleName();
            if ("WechatClientNotExistException".equals(expName)
                    || "WechatTimelineNotSupportedException".equals(expName)
                    || "WechatFavoriteNotSupportedException".equals(expName)) {
                Toast.makeText(LoginActivity.this, "请安装微信客户端", Toast.LENGTH_SHORT).show();
            }
        }
            break;
        case 3: {
            // 取消
            Toast.makeText(LoginActivity.this, "取消····", Toast.LENGTH_SHORT)
                    .show();
        }
            break;
        }
        return false;
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值