今天由于業務需要翻看了微信的開發平台和相應的接口文檔
然後一邊看,一邊無語
微信開發者文檔中的科恩!
科恩目錄
- 微信分享
- 微信登入
一.微信分享是之使用者通過第三方的app發送内容到微信,可以是群組,好友,朋友圈。
如下:開放平台的權限顯示,應用稽核後不需要認證300塊的開發者也是可以分享内容的。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39zMzYDOyADMwADOycDM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
于是我天真的以為我快要成功了,我建立了一個HelloWorld,我然後導入了jar包,我然後填寫的簽名和包名,我逐個字母的核對着,我複制了Weixin_SDKDEMO裡分享一段簡單文本的例子,然後點選了按鈕事件,等待這這一刻的來臨,1s,2s,3s..........10s過去了。我的HelloWorld好像死了一般沉寂,我搖了搖手機,心想“不會卡機了吧”,怎麼可能,我的測試機可以亞馬遜買的美版moto g,可從來都沒卡過機,我的心裡一個懷疑小人和自信小人在激烈的戰鬥,我懷疑我剛剛是不是手指是不是根本沒有出碰到我的按鈕,我又點了一下,點了兩下,我不停的在點選這按鈕,我似乎完了我TM點按鈕幹啥。終于,2分鐘以後,我判斷是請求壓根就沒發出去。我試着運作了下DEMO,并且把DEMO改成了我注冊的包名,APP_ID,SECRET,包括WXEntryActivity。然而這并沒有什麼卵用。
第二天,公司小夥伴給了我一個剛剛交了300塊錢的帳号讓我看看,我照例注冊了應用。等待通過稽核。
稽核通過後,我拿之前的代碼先試了一下登入。次奧......
微信的接入Demo和接入文檔絕B不是一個人寫的,因為文檔和demo描述的根本就不一樣。
接入微信登入的前一個小時,我仔仔細細的閱讀了文檔的每一個字。
微信登入的流程:
- 三方app發起請求
- 微信授權 傳回一個code
- 用戶端通過code和appid,secret擷取一個token
- 使用token請求各種API
文檔描述的還是很細緻的,不過..............
當你真正使用的時候就知道這文檔有多麼坑爹了。
第一步:擷取code
文檔說隻要你調用了下面這三句話,微信的sdk會滿足的你一切願望
final SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
req.state = "wechat_sdk_demo";
api.sendReq(req);
我說,卧槽!
調用了之後确實回調了onReq(),但是我并沒有看到code啊,通篇一直在描述的code尼瑪到底在哪啊,我翻着看了看DEMO源碼,尼瑪,太巧了吧,這尼瑪也太巧了吧。巧的好像林平之憑借自己的努力拿到了辟邪劍譜啊。Demo裡居然沒有擷取code的例子。我敲了一下回調的參數,也沒有發現一個叫code的參數。阿西吧..............
于是我居然去百度了............而且我在百度知道找到了答案。
String code = ((SendAuth.Resp) arg0).token
這尼瑪code居然是一個叫token的家夥,我測試過了,根據這個token可以拿刀access_token,
微信開放平台的接入文檔誤導性10顆星
你以為這就夠了?
分享:
同樣的我調用了一段簡單的代碼
WXTextObject textObj = new WXTextObject();
textObj.text = "ssssssss";
// 用WXTextObject對象初始化一個WXMediaMessage對象
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = textObj;
// 發送文本類型的消息時,title字段不起作用
// msg.title = "Will be ignored";
msg.description = "dsdsdsdsd";
// 構造一個Req
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("text"); // transaction字段用于唯一辨別一個請求
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneSession;
// 調用api接口發送資料到微信
api.sendReq(req);
得到的情況是 1.朋友圈,100%分享成功,但是每次分享後都報錯。
2.分享飛好友,成功後點選留在微信,沒報錯,點回到第三方app,報錯了。
兩次錯誤是一樣的。回到最開的始問題,代碼是一樣的,隻是300塊的開發者才有權限,為啥不寫寫清除啊。
微信開放平台就想生活一樣處處充滿挫折和坎坷,看遍微信開放平台,就如同走了一邊别人的人生.................