原文地址:https://www.namidame.tech/umeng_sdk.html
- 微信授權(quán)登錄接入需要先到微信開放平臺(tái)申請好應(yīng)用的APPID涕蚤,交納300大洋費(fèi)用得到授權(quán)登錄權(quán)限后才能使用唤崭,此處不再贅述麦牺。
- 接入的兩種方式
-- 微信SDK接入:使用微信官方SDK接入,需要分“獲取code票據(jù)”和“獲取access_token”兩步來獲得授權(quán)關(guān)系接口的調(diào)用憑證
-- 友盟SDK接入:友盟已集成各種接口接入须喂,直接一個(gè)方法搞定 - 本文記錄使用友盟SDK接入微信授權(quán)登錄中的幾處關(guān)鍵代碼,使用的是友盟SDK 6.1.1简逮,最新版請到官網(wǎng)下載
- 最新版與舊版SDK用法有出入蘸拔,官網(wǎng)文檔也不是太完善,本文僅針對6.1.1版本在Eclipse工程接入記錄
初始化SDK
最好在Android應(yīng)用入口處初始化SDK
public class XXApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
UMShareAPI.get(this);
PlatformConfig.setWeixin(WX_APP_ID, WX_APP_SECRET);
}
}
創(chuàng)建WXEntryActivity
- 在應(yīng)用包名下創(chuàng)建wxapi包今缚,包內(nèi)創(chuàng)建WXEntryActivity
- 例如應(yīng)用包名為com.test.test,則創(chuàng)建com.test.test.wxapi.WXEntryActivity
public class WXEntryActivity extends WXCallbackActivity implements IWXAPIEventHandler {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
AndroidManifest聲明
在manifest文件上聲明回調(diào)用到的WXEntryActivity低淡,包名改成自己項(xiàng)目的包名姓言。官網(wǎng)說這里一個(gè)字也不能改,試了試好像改一改也沒關(guān)系的蔗蹋。何荚。
<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" />
發(fā)送授權(quán)請求
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(){
//回調(diào)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的回調(diào)UMAuthListener沒有onStart()函數(shù),在后面的版本才有
- 上面的寫法是用Lua調(diào)用Java猪杭,再回調(diào)Lua授權(quán)結(jié)果餐塘,發(fā)送請求時(shí)運(yùn)行在Ui線程,回調(diào)時(shí)運(yùn)行在Gl線程皂吮,如果是普通請求回調(diào)直接執(zhí)行run函數(shù)內(nèi)容即可
- 關(guān)于onActivityResult戒傻,官網(wǎng)說要重寫,但6.1.1版SDK沒有重寫也可以成功調(diào)用
最后在登錄所在的Activity里復(fù)寫onActivityResult方法,注意不可在fragment中實(shí)現(xiàn)蜂筹,如果在fragment中調(diào)用登錄需纳,在fragment依賴的Activity中實(shí)現(xiàn),如果不實(shí)現(xiàn)onActivityResult方法艺挪,會(huì)導(dǎo)致登錄或回調(diào)無法正常進(jìn)行
onActivityResult代碼如下
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
著作權(quán)歸作者所有不翩。
商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處麻裳。
作者: 你很德布羅意
郵箱: namidame@sina.cn
博客地址: https://www.namidame.tech/
原文地址: http://www.namidame.tech/umeng_sdk.html