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

在我公司的項目中,同時開發了APP和微信服務號,需要做到APP和微信服務號的商城數據互通。什么個意思?首先說說,我們的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打交道。

Paste_Image.png

看到這樣的界面,是不是看到很熟悉呢?今天跟大家講的就是跟它有關的知識點。

  • 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發起的網頁授權,是用來獲取用戶的基本信息的。但這種授權需要用戶手動同意,并且由于用戶同意過,所以無須關注,就可在授權后獲取該用戶的基本信息。

什么是靜默授權和用戶同意授權?

比如你去某個寫字樓進入某家公司,進去大樓之前,保安會讓你填寫來訪登記表。這個動作就等同于微信的用戶同意授權。 如果你不是從正面進去,或者從側門、或者是溜進去,沒有填寫來訪登記信息,你直接進去了。就好比就是靜默授權。

第一種方式獲取屬于微信被動發送給開發中填寫的url的,需要用戶關注公眾號。第二種獲取屬于網頁發起請求去獲取的,兩種獲取方式獲取的openid的值是一樣的,用戶無需關注開發的公眾號。openid微信開放平臺同一個賬號下建立的在不同的公眾號和不同的應用之間是不同的,但是 unionid是一致的。

Paste_Image.png

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

  • 引導用戶進入授權頁面同意授權,獲取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網站、移動應用、公眾號,這三方的數據就可統一儲存,用戶無論在哪一端進行操作,三大平臺都會統一修改結果,這將極大方便了對同一用戶的數據管理和行為統計。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,428評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,024評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,285評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,548評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,328評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,878評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,971評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,098評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,616評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,554評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,725評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,243評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,971評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,361評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,613評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,339評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,695評論 2 370

推薦閱讀更多精彩內容

  • 很早前就想了解下微信公眾號開發,懶和拖延癥讓這計劃遲遲沒落實,正巧新項目有了微信公眾號的業務,我心中沒數地回應,我...
    英文名叫夏天閱讀 4,459評論 1 4
  • title: 微信公眾號開發:獲取openId和用戶信息 tags: 微信公眾號 categories: 筆記 ...
    行徑行閱讀 140,283評論 5 63
  • 注意:代碼自己動手寫,不要復制! GitHub 一、接入微信第三方登錄準備工作。 移動應用微信登錄是基于OAuth...
    大沖哥閱讀 15,138評論 0 7
  • 開發前首先我們要知道一些概念 各公眾號區別:1、訂閱號:為媒體和個人提供一種信息傳播方式,主要偏于為用戶傳達資訊(...
    CoderZS閱讀 3,204評論 1 19
  • 抑郁癥的治療過程中抗抑郁藥物扮演著重要的角色,尤其是在急性發病期間,主要控制病情的手段就是使用抗抑郁藥物??挂钟羲?..
    小楠子閱讀 7,092評論 3 7