{"version":"1.0","provider_name":"Jui-Nan Lin&#039;s Blog","provider_url":"https:\/\/jnlin.org","author_name":"jnlin","author_url":"https:\/\/jnlin.org\/author\/jnlin\/","title":"\u9664\u4e86\u81ea\u5df1 Server\/NTP Server \u7684\u6642\u9593\u5916\uff0c\u5176\u4ed6\u7684\u6642\u9593\u90fd\u4e0d\u61c9\u8a72\u76f8\u4fe1\u3002","html":"\u4f5c\u624b\u6a5f Client \u7684\u4eba\u61c9\u8a72\u5e38\u5e38\u9047\u5230\u9019\u7a2e\u554f\u984c\uff1aUser \u56e0\u70ba\u67d0\u4e9b\u539f\u56e0\uff08\u50cf\u662f\u5e38\u5e38\u8cf4\u5e8a\u8d77\u4e0d\u4f86\uff09\uff0c\u628a\u624b\u6a5f\u7684\u6642\u9593\u8abf\u5feb\u4e86 5 \u5206\u9418\u3002\u5982\u679c\u7528\u7684\u53c8\u662f OAuth \u9019\u985e\u6703\u6709 expire \u6a5f\u5236\u7684 Protocol\uff0c\u5c31\u6703\u9047\u5230\u8a8d\u8b49\u5931\u6557\u7684\u554f\u984c\u3002\r\n\r\n\u4e00\u822c\u7684\u89e3\u6c7a\u65b9\u6cd5\u662f\uff0c\u5229\u7528\u4e00\u53f0\u300c\u6642\u9593\u6e96\u78ba\u300d\u7684 Server\uff0c\u63d0\u4f9b\u6b63\u78ba\u7684\u6642\u9593\u3002\u53ef\u4ee5\u900f\u904e HTTP Header\uff08\u53ef\u4ee5\u5c11\u4e00\u500b request\uff09\uff0c\u4e5f\u53ef\u4ee5\u900f\u904e\u4e00\u500b API\uff0c\u4f8b\u5982\uff1a<a href=\"http:\/\/dev.pixnet.pro\/pixnet\/index_now\">http:\/\/emma.pixnet.cc\/index\/now<\/a>\u3002\u6700\u8fd1\u7684 <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.google.android.apps.authenticator2&hl=zh_TW\"> Google Authenticator <\/a> \u4e5f\u6709\u985e\u4f3c\u7684\u6a5f\u5236\u3002\r\n\r\n\u4e0d\u904e\uff0c\u4e0d\u53ea\u662f Client \u6703\u6709\u9019\u6a23\u7684\u554f\u984c\u3002\u96d6\u7136 <a href=\"http:\/\/en.wikipedia.org\/wiki\/Network_Time_Protocol\">NTP<\/a> \u5df2\u7d93\u5f88\u666e\u904d\u4e86\uff0c\u4f46\u7e3d\u662f\u6703\u9047\u5230\u56e0\u70ba\u8a2d\u5b9a\u932f\u8aa4\uff0c\u6216\u662f\u9632\u706b\u7246\u64cb\u6389\uff0c\u6216\u662f blah blah \u7b49\u7b49\u7684\u539f\u56e0\uff0c\u5c0e\u81f4 Server \u6642\u9593\u8dd1\u6389\u7684\u60c5\u5f62\u3002\u7576\u7136\uff0c\u4e5f\u6709\u53ef\u80fd\u662f\u8edf\u9ad4 Bug \u9020\u6210\u7684\u554f\u984c\uff0c\u5c0e\u81f4 Server \u50b3\u56de\u7684\u6642\u9593\u662f\u932f\u8aa4\u7684\u3002\r\n\r\n\u6700\u8fd1\u5c31\u9047\u5230\u9019\u6a23\u4e00\u500b\u597d\u73a9\u7684\u73fe\u8c61\uff1a\u5beb Parser \u7684\u6642\u5019\uff0c\u6703\u770b\u4e00\u4e0b Server \u7d66\u7684 <code>Last-Modified<\/code> \u7684 header \u4f86\u5224\u65b7\u662f\u5426\u8981 invalidate cache\uff0c\u7d50\u679c\u767c\u73fe\u6709\u7684 Server \u6703\u56de\u50b3\u672a\u4f86\u6642\u9593...XD \r\n\r\n\u6240\u4ee5\uff0c\u5982\u679c\u4f60\u7684 Server \u6709\u8ddf NTP Server \u5b9a\u671f\u5c0d\u6642\u7684\u8a71\uff0c\u61c9\u8a72\u4f7f\u7528\u81ea\u5df1 Server \u7684\u6642\u9593\uff0c\u5176\u4ed6\u4efb\u4f55\u5916\u90e8\u4f86\u7684\u6642\u9593\u90fd\u4e0d\u61c9\u8a72\u76f8\u4fe1\uff0c\u4e00\u5b9a\u8981\u6aa2\u67e5\u5408\u4e0d\u5408\u7406\u3002","type":"rich"}