摘要:創(chuàng)建引用之后,就可以通過往節(jié)點中寫入任何合法的數(shù)據(jù)讀取數(shù)據(jù)讀取數(shù)據(jù)是通過綁定回調函數(shù)來實現(xiàn)的。提供終端用戶唯一標識的過程被稱為終端用戶認證。好了,了解這點就可以開始做排行榜了。
創(chuàng)建wilddog應用
填寫應用名稱和應用ID就可以創(chuàng)建了。應用ID需要全網(wǎng)唯一
創(chuàng)建成功之后就可以在控制面板看到應用了.
1.引入SDK
2.創(chuàng)建引用
ref = Wilddog("https://.wilddogio.com/") //將 替換成申請的應用ID ref = Wilddog("https://fullstack-top-demo.wilddogio.com/")
因為wilddog是以key-value的形式存儲數(shù)據(jù),創(chuàng)建引用會定位到根節(jié)點。若要定位到子節(jié)點,只需在url后追加路徑即可,例如:
user_ref = Wilddong("https://fullstack-top-demo.wilddogio.com/user/")
野狗也提供了child()方法來獲取子節(jié)點的引用。
ref = Wilddog("https://fullstack-top-demo.wilddogio.com/") user_ref = ref.child("user")
這兩種方法是一樣的效果
1.寫入數(shù)據(jù)。
創(chuàng)建 Wilddog 引用之后,就可以通過set() 往節(jié)點中寫入任何合法的JSON數(shù)據(jù)
user_ref.set({ name : "lixiaohao", age : , blogurl : "ghost.fullstack.top" })
2.讀取數(shù)據(jù)
讀取數(shù)據(jù)是通過綁定回調函數(shù)來實現(xiàn)的。假設我們按照上面的代碼寫入了數(shù)據(jù),那么就可以使用on()函數(shù)來讀取user對象的值。
user_ref.on("value", function(datasnapshot) { console.dir(datasnapshot.val()); // 結果會在 console 中打印出剛剛set的對象 })
回調函數(shù)的參數(shù)是一個DataSnapshot對象類型,調用它的val()函數(shù)得到數(shù)據(jù)對象。上邊這個例子中,value這個事件會在初次讀取到數(shù)據(jù)的時候被觸發(fā)一次,此后每當數(shù)據(jù)發(fā)生改變,都會被觸發(fā)。
若要只讀取一次,不在之后每次數(shù)據(jù)發(fā)生變化的時候觸發(fā)回掉函數(shù),可以使用once()函數(shù)替代on()函數(shù)。
3.用戶認證
**絕大多數(shù)應用都需要一套終端用戶賬號體系。對終端用戶進行唯一標識之后,才能對用戶進行個性化的用戶體驗,控制用戶對數(shù)據(jù)的訪問權限。提供終端用戶唯一標識的過程被稱為終端用戶認證。WildDog為開發(fā)者提供了多種用戶認證方式。
野狗提供了多種用戶登錄方式,具體可查看 官方文檔**
這里要注意的一點就是,第三方登錄一定要設置OAuth跳轉域名白名單
當時因為這個沒有配置這個白名單折騰了一下午。不過在本地環(huán)境下用localhost 或127.0.0.1 訪問的話不會有影響。
好了,了解這3點就可以開始做排行榜了。
游戲排行榜我們可以去網(wǎng)上找一個html5的小游戲,稍微研究下代碼應該就可以找到游戲成績的結算方法,在游戲結束時給我們的refset()一個值就可以啦。
這里以我寫過的一個demo為例
//創(chuàng)建根節(jié)點的引用 wilddog = Wilddog(https://.wilddogio.com/"); var wilddogAuthData; //野狗用戶登錄信息 //監(jiān)聽登錄狀態(tài)變化 wilddog.onAuth(function() { //如果已登錄則將用戶數(shù)據(jù)存儲到全局變量方便調用 wilddogAuthData = data; (wilddogAuthData) { console.log(wilddogAuthData); } { //未登錄則調用野狗登錄方法,這里只是簡單的使用微博授權登錄,其他登錄方法查看官方文檔。 // 彈出新浪微博OAuth認證 wilddog.authWithOAuthRedirect("weibo", authHandler); } }); // 創(chuàng)建一個回調來處理終端用戶認證的結果,微博登錄成功后的回調方法 function authHandler(error, data) { (error) { console.log("Login Failed!", error); } { console.log("Authenticated successfully with payload:", data); } }
授權登錄成功后可獲得用戶信息
在游戲結束方法里加入
//打破自己的記錄才上傳,一般html5游戲會將最佳成績存在localstorage中,根據(jù)實際情況做修改即可 (score > bestScore){ (!wilddogAuthData){alert("你沒有使用微博賬號登陸,無法計入成績!");return false;} ts = Date().getTime(); wilddogRef.child("rank").child(wilddogAuthData.auth.uid).({ //這里的字段根據(jù)自己需求定義 uid: wilddogAuthData.auth.uid //為了盡量避免偽造數(shù)據(jù)這里將score做加密處理并放在偽造的token字段里混淆視聽,取出成績時再解密比較token與score字段即可,并不能從根本上防止作弊。 token: sjcl.encrypt(ts+,score+), score: score, ts: ts, rank: t++(3000000000000-ts), UA: navigator.userAgent }); }
rank字段用于orderByChild()方法,該方法對字符串按照字典順序來排的。這里的t是在score前面補0到6位數(shù)方便排序 ,score=100 則 t=000100,這樣組合之后可以確定高分在前,分數(shù)相同則先達到該分數(shù)的用戶在前
獲取排行榜
//獲取數(shù)據(jù),并按照對象中的 rank 字段排序返回結果集中的后10位 wilddogRef.child(k").orderByChild(k").limitToLast().on("value", function(users) { html = []; users.forEach(function (user) { item = user.(); //比較score與加密的"score",不匹配則忽略 (sjcl.decrypt(item.ts+,item.token) == item.score) { // .orderByChild()方法是升序,所以這里使用的是"unshift"方法 html.unshift("
有興趣的同學可以玩一下,完全實時的哦。簡單demo沒有做過多優(yōu)化,打開頁面后會直接彈出微博授權頁。 游戲傳送門
這是一篇轉載的文章。原作者是:李昊。點擊進入 李昊個人博客。
想研究源碼之后移植到自己的應用上的小伙伴,plz 戳這里,李昊哥哥的github,歡迎star。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/111548.html
摘要:創(chuàng)建引用之后,就可以通過往節(jié)點中寫入任何合法的數(shù)據(jù)讀取數(shù)據(jù)讀取數(shù)據(jù)是通過綁定回調函數(shù)來實現(xiàn)的。提供終端用戶唯一標識的過程被稱為終端用戶認證。好了,了解這點就可以開始做排行榜了。 創(chuàng)建wilddog應用 showImg(https://segmentfault.com/img/remote/1460000006927743?w=646&h=708); 填寫應用名稱和應用ID就可以創(chuàng)建了。...
摘要:創(chuàng)建引用之后,就可以通過往節(jié)點中寫入任何合法的數(shù)據(jù)讀取數(shù)據(jù)讀取數(shù)據(jù)是通過綁定回調函數(shù)來實現(xiàn)的。提供終端用戶唯一標識的過程被稱為終端用戶認證。好了,了解這點就可以開始做排行榜了。 創(chuàng)建wilddog應用 showImg(https://segmentfault.com/img/remote/1460000006927743?w=646&h=708); 填寫應用名稱和應用ID就可以創(chuàng)建了。...
摘要:規(guī)則分為可能是錯誤,最佳實踐,變量聲明等等,賀前輩的建議是能用的規(guī)則都用上。峰會中獎品挺多的,可惜與我擦肩而過。 iWeb峰會的消息是在開場前兩天才從朋友圈看到,稍微有點匆忙,只花了不到兩個小時的時間了解下相關主題。發(fā)現(xiàn)涉及的知識還是蠻多的,甚至一些平時也沒有接觸過。所以一些關注點,理解的層次都很有限,甚至可能有誤區(qū),僅供參考及知識面的拓展。 工具應用類 峰會的主題是HTML5,又分為...
閱讀 3766·2021-11-11 11:02
閱讀 3496·2021-10-11 10:57
閱讀 3608·2021-09-22 16:00
閱讀 1843·2021-09-02 15:15
閱讀 1322·2019-08-30 15:56
閱讀 1005·2019-08-30 15:54
閱讀 2731·2019-08-30 12:43
閱讀 3539·2019-08-29 16:06