這幾天開(kāi)發(fā)要用到微信授權(quán)的功能银室,所以就研究了一下枕面。可是微信開(kāi)放平臺(tái)接入指南里有幾個(gè)地方寫(xiě)的不清不楚政钟。在此總結(jié)一下路克,以便需要的人。
很多微信公眾平臺(tái)的應(yīng)用如果移植到app上的話就需要微信授權(quán)登陸了养交。
目前移動(dòng)應(yīng)用上微信登錄只提供原生的登錄方式精算,需要用戶安裝微信客戶端才能配合使用。也就是如果第三方應(yīng)用需要微信授權(quán)登陸的話就必須在本機(jī)上安裝了微信层坠。而后續(xù)授權(quán)登陸或調(diào)用接口之類的相當(dāng)于app和微信兩個(gè)應(yīng)用之間通話殖妇。
1、首先需要注冊(cè)微信開(kāi)放平臺(tái)破花,然后獲取開(kāi)發(fā)者認(rèn)證谦趣。審批通過(guò)之后再創(chuàng)建一個(gè)移動(dòng)應(yīng)用同樣還是需要審批。通過(guò)之后就可以給這個(gè)應(yīng)用添加微信授權(quán)登陸以及相應(yīng)功能了座每。這里移動(dòng)應(yīng)用審批通過(guò)之后會(huì)給你兩個(gè)參數(shù)前鹅,一個(gè)叫AppId,一個(gè)叫Secret峭梳。這兩個(gè)參數(shù)在后面用的到舰绘。
補(bǔ)充:寫(xiě)這篇文章有一段時(shí)間了。在這補(bǔ)充下大家容易出問(wèn)題的幾個(gè)地方葱椭。
1)大家在創(chuàng)建移動(dòng)應(yīng)用的時(shí)候注意的地方捂寿。
上面圖片是申請(qǐng)移動(dòng)應(yīng)用時(shí)候的第二步,令我想不明白的是很多開(kāi)發(fā)者還不知道應(yīng)用包名和應(yīng)用簽名指的是什么孵运。秦陋。。治笨。驳概。。旷赖。顺又。
包名是你manifest文件里面頂層的那個(gè)package啊。
就是這個(gè)東西啊,這個(gè)東西啊少年锐锣。
2)應(yīng)用簽名雕憔。好吧我真不想啰嗦了。應(yīng)用簽名就是你同過(guò)ks文件得到的那個(gè)應(yīng)用簽名琉苇。如果你不知道如何獲得這個(gè)簽名。請(qǐng)按下面步驟走:
1穷蛹,先把你的應(yīng)用程序打包安裝在你的手機(jī)上昼汗。
2蛙吏,下載官網(wǎng)上提供的簽名生成工具并安裝在手機(jī)上鸦做。下面這個(gè)地方下載:
3、打開(kāi)簽名生成工具輸入你的app的包名就生成你的應(yīng)用簽名了。
補(bǔ)充完畢矢炼。句灌。骗绕。(對(duì)于上面這點(diǎn)補(bǔ)充我真不想多回答了酬土。PS:我的昵稱留下了QQ我很無(wú)辜啊撤缴。。虎眨。大家有問(wèn)題上班時(shí)間別問(wèn)好嗎,哥心軟不忍心拒絕啊涤躲,尤其有妹子問(wèn)的時(shí)候啊。嫩挤。。墳蛋)
2约啊、在需要微信授權(quán)的項(xiàng)目中導(dǎo)入微信的第三方JAR包,這個(gè)在微信開(kāi)放平臺(tái)接入指南里面說(shuō)的很清楚纪吮,不再啰嗦碾盟。
3、注冊(cè)到微信:

這一步也沒(méi)什么課解釋的,相當(dāng)于兩人要聯(lián)系的時(shí)候先打通了電話遣妥,然后開(kāi)始溝通。這一步在需要和微信通話的界面之前注冊(cè)了就行锦担。我的是在歡迎界面注冊(cè)的。
4、開(kāi)始和微信通話
首先和微信通話之前,要在項(xiàng)目代碼中新建一個(gè)Activity,并提供相應(yīng)的回調(diào)方法供微信調(diào)用张遭。但是這一點(diǎn)在接入指南上寫(xiě)的就不清不楚導(dǎo)致我浪費(fèi)了好幾個(gè)小時(shí)宝剖。一下內(nèi)容是我在接入指南里復(fù)制來(lái)的。
a. 在你的包名相應(yīng)目錄下新建一個(gè)wxapi目錄,并在該wxapi目錄下新增一個(gè)WXEntryActivity類衡便,該類繼承自Activity(例如應(yīng)用程序的包名為net.sourceforge.simcpux镣陕,則新添加的類如下圖所示)

并在manifest文件里面加上exported屬性谴餐,設(shè)置為true。
一定要注意上面這句話:在你的包名相應(yīng)目錄下新建一個(gè)wxapi目錄呆抑。說(shuō)的是在包名相應(yīng)目錄下建一個(gè)wxapi目錄岂嗓。也就是是包名目錄的子目錄,千萬(wàn)不要直接在src下面建個(gè)包就完了鹊碍。(粗心這毛病害死人啊厌殉。)
然后再這個(gè)包下面建一個(gè)類:
[java]view plaincopy

publicclassWXEntryActivityextendsActivityimplementsIWXAPIEventHandler{
privateIWXAPI?api;
@Override
protectedvoidonCreate(Bundle?savedInstanceState)?{
//?TODO?Auto-generated?method?stub
super.onCreate(savedInstanceState);
setContentView(R.layout.flash_activity);
api?=?WXAPIFactory.createWXAPI(this,?Property.wxLoginInfo.getAppid(),false);
api.handleIntent(getIntent(),this);
}
@Override
publicvoidonReq(BaseReq?arg0)?{
//?TODO?Auto-generated?method?stub
}
@Override
publicvoidonResp(BaseResp?resp)?{
Bundle?bundle?=newBundle();
switch(resp.errCode)?{
caseBaseResp.ErrCode.ERR_OK:
//??????可用以下兩種方法獲得code
//??????resp.toBundle(bundle);
//??????Resp?sp?=?new?Resp(bundle);
//??????String?code?=?sp.code;
//??????或者
String?code?=?((SendAuth.Resp)?resp).code;
//上面的code就是接入指南里要拿到的code
break;
default:
break;
}
}
}
注意:上面是獲取code。現(xiàn)在最新的官方j(luò)ar包不支持獲得code了妹萨。直接就能得到token年枕,省略了獲取code 這一步。所以方法不變乎完,大家取的時(shí)候直接resp.token就行了熏兄。不用再去取code了。
http://blog.csdn.net/qq247890212/article/details/40822481