天天看點

微信開放平台-第三方平台開發實錄微信開放平台-第三方平台開發實錄

微信開放平台-第三方平台開發實錄

使用者公衆号/小程式授權

Method: GET
URL:  https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx&auth_type=xxx

component_appid:  申請的第三方平台的id
pre_auth_code:    預權碼,需要一系列操作才能等到下面會說,重點!!!
redirect_uri:     回調位址,上面的query參數要儲存起來
auth_type:        微信掃描時顯示的是公衆号還是小程式,可不填
           

接下來的重點内容:擷取pre_auth_code

1.擷取component_verify_ticket

微信伺服器會每十分鐘推送一次component_verify_ticket,推送位址在第三方平台詳情中。官方推送的component_verify_ticket進行了加密處理,需要先驗簽再解密。官方的解密方法

另外:文檔中說component_verify_ticket最好儲存起來

WeChat Server -> Your Server

Method: POST
URL: 你預留的推送位址?signature=xxx&timestamp=xxx&nonce=xxx&encrypt_type=xxx&msg_signature=xxx
QueryParams:
signature:      沒什麼用
timestamp:      時間戳,驗簽時使用
nonce:          驗簽時使用
encrypt_type:   加密類型,沒用
msg_signature:  密文,驗簽用

BodyParams:
<xml>
<AppId> </AppId>
<CreateTime>1413192605 </CreateTime>
<InfoType> </InfoType>
<ComponentVerifyTicket> </ComponentVerifyTicket>
</xml>
xml結構,需要解析擷取ComponentVerifyTicket中的内容
           
2.擷取component_access_token(時效2小時)
Your Server -> WeChat Server
Method: POST
URL: https://api.weixin.qq.com/cgi-bin/component/api_component_token

RequestBody:
{
"component_appid":"appid_value" ,         //第三方平台id
"component_appsecret": "appsecret_value", //第三方平台秘鑰
"component_verify_ticket": "ticket_value" //剛剛擷取的component_verify_ticket
}
ResponseBody:
{
	"component_access_token":"xxx",  // component_access_token,這個要存起來,不能每十分鐘請求一次
	"expires_in":7200 				 //過期時間
}
           
3. 擷取pre_auth_code(時效10分鐘,用存起來的component_access_token再次擷取)
Your Server -> WeChat Server

Method: POST
URL: https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=剛剛的component_access_token
RequestBody:
{
"component_appid":"appid_value" 
}
ResponseBody:
{
	"pre_auth_code":"xxx", //朝思暮想的東東
	"expires_in":600
}