1. 程式人生 > >微信第三方平臺授權

微信第三方平臺授權

目的:

        微信第三方公眾平臺是為了讓公眾號和小程式的運營者,可以一建授權給第三方平臺,通過第三方平臺來完成業務。

業務特徵:

  • 提供通用的解決方案;
  • 基於安全的公眾號授權機制;
  • 是公眾號外包團隊的商業機會。

UnionID: 為了識別使用者,每個使用者針對每個公眾號會產生一個安全的OpenID,如果需要在多公眾號、移動應用之間做使用者共通,則需前往微信開放平臺,將這些公眾號和應用繫結到一個開放平臺賬號下,繫結後,一個使用者雖然對多個公眾號和應用有多個不同的OpenID,但他對所有這些同一開放平臺賬號下的公眾號和應用,只有一個UnionID。可以通過第三方平臺呼叫介面獲取到使用者的unionID,不過需要提供使用者的openID。

公眾號授權給微信第三方平臺流程:

第三方平臺的一些設定:

授權流程技術說明

  • 首先,我們要弄清楚這個途中使用者的主體是誰,剛開始看的時候以為是使用公眾號的粉絲使用者,不過意識到很不合理,如何讓每個使用者都去做授權操作。所以在此說明這個使用者的主體是公眾號的管理員,只要管理員做了授權的操作即可;事實上,第三方平臺是作為微信伺服器和公眾號之間資訊傳遞的橋樑,授權之後,可以代替公眾號完成業務,方便公眾號的管理和某些業務的統一整合。
  • 公眾號管理員進入我們第三方平臺的網站(http://bill.fj118114.com/wxthird/third/toAuthorize.htm

    ),點選授權按鈕,第三平臺在後臺同夥api獲取預授權碼,平臺返回一個授權連結,點選回讓管理員掃碼授權,授權完成後會返回授權碼,第三方平臺憑此授權碼可以獲取公眾號的資訊。


     

  • 獲取預授權碼

  • 推送component_verify_ticket,第三方平臺建立之後,微信伺服器每隔10分鐘會向第三方平臺的接收地址推送一次 component_verify_ticket,用於獲取第三方平臺介面呼叫憑據。

          其中遇到的坑:

           []微信api的說明資訊沒有完整返回引數說明,只有一個xml格式的返回資料。網上查了一下知道了引數;

           []返回的data資料是放在request的header中的,需要先讀取出來;

訊息解密,返回的引數需要解密才可以獲取到xml格式的明文;微信會提供加解密方法。

    <xml>

    <AppId> </AppId>

    <CreateTime>1413192605 </CreateTime>

    <InfoType> </InfoType>

    <ComponentVerifyTicket> </ComponentVerifyTicket>

    </xml>

           []解密後的xml明文需要解析,最終得到component_verify_ticket。

           []component_verify_ticket需要儲存下來,用於獲取 component_access_token。


  • 獲取到預授權碼後,就可以讓管理員掃碼授權了。微信提供兩種授權方式,在此用的方式一。
  • 方式一:授權註冊頁面掃碼授權

https://mp.weixin.qq.com/cgi-bin/componentloginpage?component\_appid=xxxx&pre\_auth\_code=xxxxx&redirect\_uri=xxxx&auth\_type=xxx。

            []坑三

            一開始以為這個是直接把這個連結生成二維碼,讓管理員去掃,然後掃了幾下都是報錯。正確的操作是把連結返回到頁面,點選會跳出一個二維碼,然後管理員掃碼授權。微信會判斷來源域名是否,即第三方平臺設定時的後臺域名。因此要在網站內發起授權。

            []這個連結有一個回撥url(redirect_url),必須填寫,也是接收授權碼的方法路徑。


  • 獲取到授權碼就可以換取公眾號或小程式的介面呼叫憑據(有效期2小時)

           會返回一個呼叫憑據(authorizer_access_token)和一個重新整理憑證(authorizer_refresh_token)

            重新整理憑證使用者重新整理呼叫憑據。

           這個呼叫憑據(access_token)是可以用來呼叫公眾號的api

           https://api.weixin.qq.com/cgi-bin/user/get?access_token=這個例子是公眾號獲取使用者列表的api,因此獲取到憑據之後,第三方平臺就可以代替公眾號實現業務。


至此,就可以用第三平臺代公眾號實現一些業務,比如推送訊息等。