1. 程式人生 > >微信公眾號與APP微信第三方登錄賬號打通

微信公眾號與APP微信第三方登錄賬號打通

class 微信服務號 成功 信用 lock 通用 管理中心 post 公眾

一個項目同時開發了APP和微信服務號,需要做到APP和微信服務號的賬號互通同步,也就是說一個賬號在2個地方都可以用,當然這個前提是保證你公司自己的服務器的數據庫用的是同一套。

為保證用戶數據的唯一性,打通app與公眾號的數據,需要做如下工作:

1.申請appid,
在-登錄微信開放平臺--申請賬號(如果沒有,就去註冊,不能使用公眾號登錄或註冊)--開發者資質認證(賬號中心,認證時需提交很多資料;等待認證結果)--認證通過之後,創建應用(管理中心,創建你要開發的app,等待審核);以上是app需要做的。(如果app與公眾號共用一個用戶數據庫,則繼續以下步驟:--綁定公眾賬號(管理中心--公眾賬號,有幾個公眾賬號,就綁定幾個));
註意:公眾號的數據和app的數據,一定要保證放在同一個服務端,不同的話,需要登錄公眾號,在網頁授權的功能裏,把授權的服務器地址改成與app的一樣(很重要這一步)

2.app上第三方登錄,
配置開發,網上有很多資料,可自查;主要在授權登錄成功以後,將獲取到的微信用戶數據傳送給後臺(openid和unionid最主要,不同的公眾號登錄openid不同,但unionid是唯一的)

3.後臺方面很重要
當用戶進行公眾號登錄時,要根據獲取的openid和access_token再獲取詳情信息(主要是unionid),當app客戶端傳過來的unionid,進行判斷,unionid相同就跟新此用戶,不同就錄入數據庫;(不同的微信公眾號登錄,分別獲取數據再獲取unionid,最後再統一判斷唯一性)

下面跟大家來聊聊微信的openid和unionid 。

無論是產品經理、還是H5前端工程師、客戶端前端開發人員、後端開發人員,只要進行微信開發就會跟openid和unionid打交道。

  • openid 對當前開發者帳號唯一,openid的機制是同一個區域唯一,比如一個公眾號裏,你的openid是唯一的,在你的APP應用裏他是唯一的,但是這2者之間是不通用的。

  • unionid 用戶統一標識。針對一個微信開放平臺帳號下的應用,同一用戶的unionid是唯一的。unionid 就是微信為了解決同一個開放平臺下的賬號的不同應用、服務號之間的數據互通的問題而出現的。

1、微信的用戶隱私策略:

每個接入微信的應用(公眾號、APP)就像一個獨立的商店,用戶使用這些應用就像逛商店,商場用會員卡識別用戶,類似的,我們根據商場名字為每個用戶生成了一張專屬會員卡(openid),每張會員卡只能在對應的商場才能夠使用,你不能拿著沃爾瑪的會員卡去華潤萬家積分。這是一種安全的授權方式,如果沒有這個會員卡,直接暴露微信號,就相當於拿著身份證去逛商場,丟失一個會員卡號遠比丟失身份證號要安全。那麽問題來了,都是一個集團下的門店,A店和B店希望做到會員卡通用。微信在這裏做了一個打通機制,對於同一個企業,在用戶屬性裏面加了一個企業屬性(UnionID),方便同一個企業在不同的產品中識別到同一個用戶。

微信獨有的 unionid機制, 用戶唯一標識符,同個微信開放平臺下的開發賬號下的所有應用,如果用戶是同一個微信登錄,那麽unionid是一樣的。

這個機制伴隨著微信聯合登錄已經在微信開放平臺(open.weixin.qq.com)推出了。獲得了開放平臺認證的企業,可以綁定10個手機應用、10個網站、10個公眾號,他們對應的用戶信息也可以互聯互通。

2、微信openid和unionid長度是不一樣的

openid=28 , unionid=29

3、第三方獲取微信openid的兩種常見的方式

  • 1、)靜默授權,用戶無感知

用戶在你開發的公眾號發消息,微信服務器將POST消息的XML數據包到開發者填寫的URL上,這時你可以通過程序獲取到改用戶的openid。
以snsapi_base為scope發起的網頁授權,是用來獲取進入頁面的用戶的openid的,並且是靜默授權並自動跳轉到回調頁的。用戶感知的就是直接進入了回調頁(往往是業務頁面)

  • 2、)用戶手動同意授權
    通過微信專有網頁授權頁面獲取(如上圖的綠色界面),需要用戶手動點擊確認。

以snsapi_userinfo為scope發起的網頁授權,是用來獲取用戶的基本信息的。但這種授權需要用戶手動同意,並且由於用戶同意過,所以無須關註,就可在授權後獲取該用戶的基本信息。

微信網頁授權登錄大致流程分為四步:

  • 引導用戶進入授權頁面同意授權,獲取code
  • 通過code換取網頁授權access_token(與基礎支持中的access_token不同)
  • 如果需要,開發者可以刷新網頁授權access_token,避免過期
  • 通過網頁授權access_token和openid獲取用戶基本信息(支持UnionID機制)

網頁授權獲取用戶基本信息也遵循UnionID機制。

如果開發者有在多個公眾號,或在公眾號、移動應用之間統一用戶帳號的需求,需要前往微信開放平臺(open.weixin.qq.com)綁定公眾號後,才可利用UnionID機制來滿足上述需求。

註意

我們在使用微信網頁版本的時候,生成微信二維碼用戶掃描登錄,此時獲取的openid和前面我們所說通過微信客戶端獲取的openid就不是一樣的,但是UnionID是一樣的,這是因為,網頁二維碼掃描登錄是網站應用,第一種獲取openid是公眾號,兩者屬於不同應用,所以是不一樣的。

UnionID機制的優勢和好處

  • 對於用戶來說,用一個微信號就可以同時跨平臺登陸公眾號、移動應用和PC網站,無需重新註冊,方便快捷。

  • 對於開發者來說:

  • 1、可以降低用戶註冊成本,提高用戶留存率,更好的管理用戶資料。

  • 2、如果是PC網站,微信登陸就和我們在PC上登陸網頁版的微信一樣,直接掃描二維碼即可,極大的方便了用戶,而且保障安全。

  • 3、當同一用戶用同一微信同時登陸PC網站、移動應用、公眾號,這三方的數據就可統一儲存,用戶無論在哪一端進行操作,三大平臺都會統一修改結果,這將極大方便了對同一用戶的數據管理和行為統計。

微信公眾號與APP微信第三方登錄賬號打通