微信開放平台-第三方平台開發實錄
使用者公衆号/小程式授權
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×tamp=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
}