微信賬號(hào)登陸Parse

parse的官方文檔提到如何通過(guò)第三方賬號(hào)登陸注冊(cè),如facebook萧芙、twitter的登陸。同時(shí)也提供google假丧、github等賬號(hào)的登陸能力双揪。至于如何登陸,文檔里有簡(jiǎn)短描述但實(shí)驗(yàn)一直未成功包帚,對(duì)國(guó)內(nèi)微信渔期、QQ等賬號(hào)的登陸更是只字未提,原以為即使要使用也需要進(jìn)行二次開(kāi)發(fā)渴邦。但近期看其源碼時(shí)竟然發(fā)現(xiàn)了oauth登陸微信疯趟、qq、微博等國(guó)內(nèi)openid的蹤跡
https://github.com/parse-community/parse-server/tree/master/src/Adapters/Auth

微信登陸和注冊(cè)(REST API版本)

但如何才能綁定這些賬號(hào)呢谋梭?經(jīng)過(guò)大量的搜尋信峻,終于在REST API中找到一些蹤跡
http://docs.parseplatform.org/rest/guide/#linking

示例代碼中,演示如何用REST API綁定facebook賬號(hào)瓮床,雖然沒(méi)有提到支持微信站欺,但根據(jù)parse server在github代碼證據(jù)可以猜測(cè)微信也能行得通。
參照源碼:

https://github.com/parse-community/parse-server/blob/master/src/Adapters/Auth/wechat.js

對(duì)請(qǐng)求進(jìn)行如下修改:

  1. 需要將類(lèi)型由示例代碼中的facebook改為wechat(根據(jù)代碼的文件的明明猜測(cè)如此纤垂,經(jīng)過(guò)驗(yàn)證后也確實(shí)為wechat)
  2. wechat的值中兩個(gè)字段是必須的
    • id矾策,微信的openid
    • access_token,微信的access_token峭沦。

另外:

  • curl要put到的地址填寫(xiě)為你真實(shí)的地址
  • X-Parse-Application-Id贾虽,你的APP_ID
  • X-Parse-REST-API-Key,你的MASETER_KEY
  • X-Parse-Session-Token吼鱼,有效的session token(可以從dashboard的Session中找)
  • curl要請(qǐng)求的地址蓬豁,填寫(xiě)為http://your_parse_server/parse/users/user_object_id, user_object_id需要是X-Parse-Session-Token的用戶id

修改后示例:

curl -X PUT \
  -H "X-Parse-Application-Id: YOUR_APP_ID" \
  -H "X-Parse-REST-API-Key: YOUR_MASTER_KEY" \
  -H "X-Parse-Session-Token: r:32d5839c5cb973927680a30c0e8e1a2c" \
  -H "Content-Type: application/json" \
  -d '{
        "authData": {
          "wechat": {
            "id": "your_openid",
            "access_token": "t9kYDaf1-vjBmYm4SbtwrehYOMa0Oe-iPDrRgfQ5uIUrAI-rqpgGdSk0KZbNvqgAMaqtgbm-xPz51baqq7IEuA"
          }
        }
      }' \
http://yourhost:1337/parse/users/1jhp70s6M8

微信登陸和注冊(cè)(JS版本)

注冊(cè)和登陸 | SIGNING UP AND LOGGING IN

假如已經(jīng)完成了微信的第三方登陸授權(quán)绰咽,獲得對(duì)應(yīng)openid和access_token,就可以通過(guò)_linkWith方法做到自動(dòng)注冊(cè)(如果不存在綁定此openid的賬號(hào)會(huì)注冊(cè))和登陸(如果已經(jīng)存在則直接登陸)地粪,這也意味著通過(guò)_linkWith方法可以自動(dòng)創(chuàng)建和登陸Parse賬號(hào)取募。

關(guān)于_linkWith方法,見(jiàn)
http://docs.parseplatform.org/js/guide/#signing-up-and-logging-in

對(duì)應(yīng)_linkWith這個(gè)函數(shù)的下劃線有些好奇蟆技,是特意為止還是代碼缺陷玩敏?不過(guò)沒(méi)時(shí)間管了,因?yàn)槌嗣诌€有大坑质礼!

大坑在哪旺聚?
坑在按照官方的文檔無(wú)論如何都成功不了,另外加上網(wǎng)上的資料幾乎為零眶蕉,國(guó)外的網(wǎng)站大部分是登陸facebook或者twitter砰粹,對(duì)登陸國(guó)內(nèi)的微信之類(lèi)的遇到的不是同類(lèi)問(wèn)題。國(guó)內(nèi)又沒(méi)有相關(guān)的案例(可能是Parse這個(gè)名字對(duì)搜索引擎不友好)

當(dāng)前該文檔和js sdk的具體行為不一致造挽,實(shí)際使用時(shí)發(fā)現(xiàn)_linkWith的第二個(gè)參數(shù)需要“包”一層碱璃,否則會(huì)拼接成錯(cuò)誤的格式,這個(gè)錯(cuò)誤還是對(duì)比rest api版本的_linkWith時(shí)發(fā)現(xiàn)的饭入,要不是rest api成功過(guò)肯定會(huì)再次放棄嵌器。

源文檔中錯(cuò)誤的代碼示例:
let myAuthData = {
    //...
}
let user = new Parse.User();
user._linkWith('twitter', myAuthData).then(function(user){
    // user
});
修正后的代碼示例
var myAuthData = {
  authData:{
    // 根據(jù)具體的類(lèi)型,決定該字段需要填寫(xiě)哪些參數(shù)圣拄,比如微信需要填寫(xiě)id(值應(yīng)當(dāng)是微信的openid)和access_token
    id: "your_wechat_openid",
    "access_token": "your_access_token",
  }
}

let user = new Parse.User();
user._linkWith('wechat', myAuthData).then(function(user){
    // user
});

綁定 | LINKING

并不是所有的微信用戶都是新用戶嘴秸。如果用戶已經(jīng)有了Parse賬戶毁欣,希望也能通過(guò)微信登陸庇谆,那需要的就需要綁定。從使用上和“注冊(cè)和登陸 | SIGNING UP AND LOGGING IN”是完全一樣的凭疮,唯一的區(qū)別在于:

  • 不是:用new Parse.User()
  • 而是:使用已經(jīng)登陸的用戶實(shí)例饭耳,比如Parse.User.current();

完整代碼:

    var myAuthData = {
      authData:{
        // 根據(jù)具體的類(lèi)型,決定該字段需要填寫(xiě)哪些參數(shù)执解,比如微信需要填寫(xiě)id(值應(yīng)當(dāng)是微信的openid)和access_token
        id: "your_wechat_openid",
        "access_token": "your_access_token",
      }
    }
    
    var user = Parse.User.current(); // 已經(jīng)登陸的user
    user._linkWith('wechat', myAuthData).then(function(user){
        // user
    });

解除綁定 | UNLINKING

又一大坑寞肖,v1.10.0版本的js sdk,綁定還可以通過(guò)改改使用方式繞過(guò)衰腌,而解綁連繞過(guò)的辦法都沒(méi)有P麦 !右蕊!

被迫找找到舊版本的sdk嘗試琼稻,終于在v1.9.0-rc2發(fā)現(xiàn)可以通過(guò)類(lèi)似綁定和解綁的方式繞過(guò)bug,解除綁定

代碼示例

var myAuthData = {
  authData:null
}

var user = Parse.User.current();
user._linkWith('wechat', myAuthData).then(function(user){
    // user
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末饶囚,一起剝皮案震驚了整個(gè)濱河市帕翻,隨后出現(xiàn)的幾起案子鸠补,更是在濱河造成了極大的恐慌,老刑警劉巖嘀掸,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件紫岩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡睬塌,警方通過(guò)查閱死者的電腦和手機(jī)泉蝌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)衫仑,“玉大人梨与,你說(shuō)我怎么就攤上這事∥挠” “怎么了粥鞋?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)瞄崇。 經(jīng)常有香客問(wèn)我呻粹,道長(zhǎng),這世上最難降的妖魔是什么苏研? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任等浊,我火速辦了婚禮,結(jié)果婚禮上摹蘑,老公的妹妹穿的比我還像新娘筹燕。我一直安慰自己,他們只是感情好衅鹿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布撒踪。 她就那樣靜靜地躺著,像睡著了一般大渤。 火紅的嫁衣襯著肌膚如雪制妄。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天泵三,我揣著相機(jī)與錄音耕捞,去河邊找鬼。 笑死烫幕,一個(gè)胖子當(dāng)著我的面吹牛俺抽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播较曼,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼磷斧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起瞳抓,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤埃疫,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后孩哑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體栓霜,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年横蜒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胳蛮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丛晌,死狀恐怖仅炊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情澎蛛,我是刑警寧澤抚垄,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站谋逻,受9級(jí)特大地震影響呆馁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜毁兆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一浙滤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧气堕,春花似錦纺腊、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至骗爆,卻和暖如春次氨,著一層夾襖步出監(jiān)牢的瞬間蔽介,已是汗流浹背摘投。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留虹蓄,地道東北人犀呼。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像薇组,于是被迫代替她去往敵國(guó)和親外臂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容