天天看點

微信第三方接入遇到的科恩(坑)——登入、分享

今天由于業務需要翻看了微信的開發平台和相應的接口文檔

然後一邊看,一邊無語

微信開發者文檔中的科恩!

科恩目錄

  • 微信分享
  • 微信登入

一.微信分享是之使用者通過第三方的app發送内容到微信,可以是群組,好友,朋友圈。

如下:開放平台的權限顯示,應用稽核後不需要認證300塊的開發者也是可以分享内容的。

微信第三方接入遇到的科恩(坑)——登入、分享

        于是我天真的以為我快要成功了,我建立了一個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塊的開發者才有權限,為啥不寫寫清除啊。

微信第三方接入遇到的科恩(坑)——登入、分享

微信開放平台就想生活一樣處處充滿挫折和坎坷,看遍微信開放平台,就如同走了一邊别人的人生.................