【转载】Android友盟SDK微信授权登录接入

本文详细介绍了如何在Android应用中使用友盟6.1.1版本SDK接入微信授权登录,包括初始化SDK、创建WXEntryActivity、配置AndroidManifest以及关键代码实现。

原文地址:https://www.namidame.tech/umeng_sdk.html

官方文档:
微信SDK接入
友盟SDK接入

  • 微信授权登录接入需要先到微信开放平台申请好应用的APPID,交纳300大洋费用得到授权登录权限后才能使用,此处不再赘述。
  • 接入的两种方式
    – 微信SDK接入:使用微信官方SDK接入,需要分“获取code票据”和“获取access_token”两步来获得授权关系接口的调用凭证
    – 友盟SDK接入:友盟已集成各种接口接入,直接一个方法搞定
  • 本文记录使用友盟SDK接入微信授权登录中的几处关键代码,使用的是友盟SDK 6.1.1,最新版请到官网下载
  • 最新版与旧版SDK用法有出入,官网文档也不是太完善,本文仅针对6.1.1版本在Eclipse工程接入记录

初始化SDK

最好在Android应用入口处初始化SDK

public class XXApplication extends Application {
	@Override
	public void onCreate() {
		super.onCreate();
		UMShareAPI.get(this);
		PlatformConfig.setWeixin(WX_APP_ID, WX_APP_SECRET);
	}
}

创建WXEntryActivity

  • 在应用包名下创建wxapi包,包内创建WXEntryActivity
  • 例如应用包名为com.test.test,则创建com.test.test.wxapi.WXEntryActivity
public class WXEntryActivity extends WXCallbackActivity implements IWXAPIEventHandler {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	}
}

AndroidManifest声明

在manifest文件上声明回调用到的WXEntryActivity,包名改成自己项目的包名。官网说这里一个字也不能改,试了试好像改一改也没关系的。。

<activity
   android:name="com.test.test.wxapi.WXEntryActivity"
   android:theme="@android:style/Theme.Translucent.NoTitleBar"
   android:configChanges="keyboardHidden|orientation|screenSize"
   android:exported="true"
   android:screenOrientation="portrait" />

发送授权请求

public void requestAuth() {
	this.runOnUiThread(new Runnable() {
		@Override
		public void run() {
			UMShareAPI mShareAPI = UMShareAPI.get(this);
			mShareAPI.getPlatformInfo(this, SHARE_MEDIA.WEIXIN, umAuthListener);
		}
	});
}

private UMAuthListener umAuthListener = new UMAuthListener() {
	@Override
	public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
		System.out.println("AuthorizeSuccess");
		for (String key : data.keySet()) { 
			System.out.println("Key = " + key); 
		} 
		for (String value : data.values()) { 
		  	System.out.println("Value = " + value); 
		}
		this.runOnGlThread(new Runnable(){
			@Override
			public void run(){
				//回调Lua
			}
		})
	}

	@Override
	public void onError(SHARE_MEDIA platform, int action, Throwable t) {
		Toast.makeText(this.getApplicationContext(), "Authorizefail", Toast.LENGTH_SHORT).show();
	}

	@Override
	public void onCancel(SHARE_MEDIA platform, int action) {
		Toast.makeText(this.getApplicationContext(), "Authorizecancel", Toast.LENGTH_SHORT).show();
	}
};

注:

  • 6.1.1版SDK的回调UMAuthListener没有onStart()函数,在后面的版本才有
  • 上面的写法是用Lua调用Java,再回调Lua授权结果,发送请求时运行在Ui线程,回调时运行在Gl线程,如果是普通请求回调直接执行run函数内容即可
  • 关于onActivityResult,官网说要重写,但6.1.1版SDK没有重写也可以成功调用

最后在登录所在的Activity里复写onActivityResult方法,注意不可在fragment中实现,如果在fragment中调用登录,在fragment依赖的Activity中实现,如果不实现onActivityResult方法,会导致登录或回调无法正常进行

onActivityResult代码如下

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	super.onActivityResult(requestCode, resultCode, data);
	UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者: 你很德布罗意
邮箱: namidame@sina.cn
博客地址: https://www.namidame.tech/
原文地址: http://www.namidame.tech/umeng_sdk.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值