这几天集成了微信登陆,有点麻烦,刚开始我集成的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; } }