[{"data":1,"prerenderedAt":659},["ShallowReactive",2],{"navigation":3,"/guide/authentication":55,"/guide/authentication-surround":654},[4,25],{"title":5,"path":6,"stem":7,"children":8,"page":24},"快速开始","/guide","1.guide",[9,14,19],{"title":10,"path":11,"stem":12,"icon":13},"快速入门","/guide/getting-started","1.guide/1.getting-started","i-lucide-rocket",{"title":15,"path":16,"stem":17,"icon":18},"认证","/guide/authentication","1.guide/2.authentication","i-lucide-lock",{"title":20,"path":21,"stem":22,"icon":23},"错误处理","/guide/error-handling","1.guide/3.error-handling","i-lucide-alert-triangle",false,{"title":26,"path":27,"stem":28,"children":29,"page":24},"API文档","/api","2.api",[30,35,40,45,50],{"title":31,"path":32,"stem":33,"icon":34},"用户认证","/api/auth","2.api/1.auth","i-lucide-key-round",{"title":36,"path":37,"stem":38,"icon":39},"AI 角色","/api/characters","2.api/2.characters","i-lucide-bot",{"title":41,"path":42,"stem":43,"icon":44},"知识库","/api/knowledge","2.api/3.knowledge","i-lucide-book-open",{"title":46,"path":47,"stem":48,"icon":49},"聊天会话","/api/chat","2.api/4.chat","i-lucide-message-circle",{"title":51,"path":52,"stem":53,"icon":54},"插件","/api/plugins","2.api/5.plugins","i-lucide-puzzle",{"id":56,"title":15,"body":57,"description":647,"extension":648,"links":649,"meta":650,"navigation":651,"path":16,"seo":652,"stem":17,"__hash__":653},"docs/1.guide/2.authentication.md",{"type":58,"value":59,"toc":640},"minimark",[60,69,73,102,106,109,192,195,514,518,521,529,533,541,590,594,630,636],[61,62,63,64,68],"p",{},"MomoHub 使用 ",[65,66,67],"strong",{},"JWT Bearer Token"," 进行 API 认证。",[70,71,72],"h2",{"id":72},"认证流程",[74,75,76,88,93],"ol",{},[77,78,79,80,84,85],"li",{},"用户通过邮箱密码登录，获取 ",[81,82,83],"code",{},"accessToken"," 和 ",[81,86,87],{},"refreshToken",[77,89,90,91],{},"在后续请求的 Header 中携带 ",[81,92,83],{},[77,94,95,96,98,99,101],{},"当 ",[81,97,83],{}," 过期前，使用 ",[81,100,87],{}," 刷新",[70,103,105],{"id":104},"获取-token","获取 Token",[61,107,108],{},"通过登录接口获取 Token：",[110,111,116],"pre",{"className":112,"code":113,"language":114,"meta":115,"style":115},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X POST https://momohub-api.hanasaki.tech/v1/auth/sign-in/email \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"email\": \"user@example.com\",\n    \"password\": \"your_password\"\n  }'\n","bash","",[81,117,118,141,159,171,177,183],{"__ignoreMap":115},[119,120,123,127,131,134,137],"span",{"class":121,"line":122},"line",1,[119,124,126],{"class":125},"sBMFI","curl",[119,128,130],{"class":129},"sfazB"," -X",[119,132,133],{"class":129}," POST",[119,135,136],{"class":129}," https://momohub-api.hanasaki.tech/v1/auth/sign-in/email",[119,138,140],{"class":139},"sTEyZ"," \\\n",[119,142,144,147,151,154,157],{"class":121,"line":143},2,[119,145,146],{"class":129},"  -H",[119,148,150],{"class":149},"sMK4o"," \"",[119,152,153],{"class":129},"Content-Type: application/json",[119,155,156],{"class":149},"\"",[119,158,140],{"class":139},[119,160,162,165,168],{"class":121,"line":161},3,[119,163,164],{"class":129},"  -d",[119,166,167],{"class":149}," '",[119,169,170],{"class":129},"{\n",[119,172,174],{"class":121,"line":173},4,[119,175,176],{"class":129},"    \"email\": \"user@example.com\",\n",[119,178,180],{"class":121,"line":179},5,[119,181,182],{"class":129},"    \"password\": \"your_password\"\n",[119,184,186,189],{"class":121,"line":185},6,[119,187,188],{"class":129},"  }",[119,190,191],{"class":149},"'\n",[61,193,194],{},"响应：",[110,196,200],{"className":197,"code":198,"language":199,"meta":115,"style":115},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"success\": true,\n  \"data\": {\n    \"user\": {\n      \"userId\": \"967217c8-4e26-4404-bcc4-03e084b542f9\",\n      \"email\": \"user@example.com\",\n      \"username\": \"Sensei\",\n      \"avatar\": null,\n      \"isEmailVerified\": true,\n      \"createdAt\": \"2024-06-01T12:00:00Z\",\n      \"updatedAt\": \"2024-06-01T12:00:00Z\"\n    },\n    \"tokens\": {\n      \"accessToken\": \"eyJhbGciOiJIUzI1NiIs...\",\n      \"refreshToken\": \"eyJhbGciOiJIUzI1NiIs...\",\n      \"accessTokenExpiredIn\": 1771325631,\n      \"refreshTokenExpiredIn\": 1771930431,\n      \"tokenType\": \"Bearer\"\n    }\n  }\n}\n","json",[81,201,202,206,223,237,251,274,294,315,330,344,365,384,390,404,424,443,460,477,496,502,508],{"__ignoreMap":115},[119,203,204],{"class":121,"line":122},[119,205,170],{"class":149},[119,207,208,211,215,217,220],{"class":121,"line":143},[119,209,210],{"class":149},"  \"",[119,212,214],{"class":213},"spNyl","success",[119,216,156],{"class":149},[119,218,219],{"class":149},":",[119,221,222],{"class":149}," true,\n",[119,224,225,227,230,232,234],{"class":121,"line":161},[119,226,210],{"class":149},[119,228,229],{"class":213},"data",[119,231,156],{"class":149},[119,233,219],{"class":149},[119,235,236],{"class":149}," {\n",[119,238,239,242,245,247,249],{"class":121,"line":173},[119,240,241],{"class":149},"    \"",[119,243,244],{"class":125},"user",[119,246,156],{"class":149},[119,248,219],{"class":149},[119,250,236],{"class":149},[119,252,253,256,260,262,264,266,269,271],{"class":121,"line":179},[119,254,255],{"class":149},"      \"",[119,257,259],{"class":258},"sbssI","userId",[119,261,156],{"class":149},[119,263,219],{"class":149},[119,265,150],{"class":149},[119,267,268],{"class":129},"967217c8-4e26-4404-bcc4-03e084b542f9",[119,270,156],{"class":149},[119,272,273],{"class":149},",\n",[119,275,276,278,281,283,285,287,290,292],{"class":121,"line":185},[119,277,255],{"class":149},[119,279,280],{"class":258},"email",[119,282,156],{"class":149},[119,284,219],{"class":149},[119,286,150],{"class":149},[119,288,289],{"class":129},"user@example.com",[119,291,156],{"class":149},[119,293,273],{"class":149},[119,295,297,299,302,304,306,308,311,313],{"class":121,"line":296},7,[119,298,255],{"class":149},[119,300,301],{"class":258},"username",[119,303,156],{"class":149},[119,305,219],{"class":149},[119,307,150],{"class":149},[119,309,310],{"class":129},"Sensei",[119,312,156],{"class":149},[119,314,273],{"class":149},[119,316,318,320,323,325,327],{"class":121,"line":317},8,[119,319,255],{"class":149},[119,321,322],{"class":258},"avatar",[119,324,156],{"class":149},[119,326,219],{"class":149},[119,328,329],{"class":149}," null,\n",[119,331,333,335,338,340,342],{"class":121,"line":332},9,[119,334,255],{"class":149},[119,336,337],{"class":258},"isEmailVerified",[119,339,156],{"class":149},[119,341,219],{"class":149},[119,343,222],{"class":149},[119,345,347,349,352,354,356,358,361,363],{"class":121,"line":346},10,[119,348,255],{"class":149},[119,350,351],{"class":258},"createdAt",[119,353,156],{"class":149},[119,355,219],{"class":149},[119,357,150],{"class":149},[119,359,360],{"class":129},"2024-06-01T12:00:00Z",[119,362,156],{"class":149},[119,364,273],{"class":149},[119,366,368,370,373,375,377,379,381],{"class":121,"line":367},11,[119,369,255],{"class":149},[119,371,372],{"class":258},"updatedAt",[119,374,156],{"class":149},[119,376,219],{"class":149},[119,378,150],{"class":149},[119,380,360],{"class":129},[119,382,383],{"class":149},"\"\n",[119,385,387],{"class":121,"line":386},12,[119,388,389],{"class":149},"    },\n",[119,391,393,395,398,400,402],{"class":121,"line":392},13,[119,394,241],{"class":149},[119,396,397],{"class":125},"tokens",[119,399,156],{"class":149},[119,401,219],{"class":149},[119,403,236],{"class":149},[119,405,407,409,411,413,415,417,420,422],{"class":121,"line":406},14,[119,408,255],{"class":149},[119,410,83],{"class":258},[119,412,156],{"class":149},[119,414,219],{"class":149},[119,416,150],{"class":149},[119,418,419],{"class":129},"eyJhbGciOiJIUzI1NiIs...",[119,421,156],{"class":149},[119,423,273],{"class":149},[119,425,427,429,431,433,435,437,439,441],{"class":121,"line":426},15,[119,428,255],{"class":149},[119,430,87],{"class":258},[119,432,156],{"class":149},[119,434,219],{"class":149},[119,436,150],{"class":149},[119,438,419],{"class":129},[119,440,156],{"class":149},[119,442,273],{"class":149},[119,444,446,448,451,453,455,458],{"class":121,"line":445},16,[119,447,255],{"class":149},[119,449,450],{"class":258},"accessTokenExpiredIn",[119,452,156],{"class":149},[119,454,219],{"class":149},[119,456,457],{"class":258}," 1771325631",[119,459,273],{"class":149},[119,461,463,465,468,470,472,475],{"class":121,"line":462},17,[119,464,255],{"class":149},[119,466,467],{"class":258},"refreshTokenExpiredIn",[119,469,156],{"class":149},[119,471,219],{"class":149},[119,473,474],{"class":258}," 1771930431",[119,476,273],{"class":149},[119,478,480,482,485,487,489,491,494],{"class":121,"line":479},18,[119,481,255],{"class":149},[119,483,484],{"class":258},"tokenType",[119,486,156],{"class":149},[119,488,219],{"class":149},[119,490,150],{"class":149},[119,492,493],{"class":129},"Bearer",[119,495,383],{"class":149},[119,497,499],{"class":121,"line":498},19,[119,500,501],{"class":149},"    }\n",[119,503,505],{"class":121,"line":504},20,[119,506,507],{"class":149},"  }\n",[119,509,511],{"class":121,"line":510},21,[119,512,513],{"class":149},"}\n",[70,515,517],{"id":516},"使用-token","使用 Token",[61,519,520],{},"在请求头中携带 Token：",[110,522,527],{"className":523,"code":525,"language":526},[524],"language-text","Authorization: Bearer eyJhbGciOiJIUzI1NiIs...\n","text",[81,528,525],{"__ignoreMap":115},[70,530,532],{"id":531},"刷新-token","刷新 Token",[61,534,95,535,537,538,540],{},[81,536,83],{}," 过期时，使用 ",[81,539,87],{}," 获取新的 Token：",[110,542,544],{"className":112,"code":543,"language":114,"meta":115,"style":115},"curl -X POST https://api.momohub.com/v1/auth/refresh \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"refreshToken\": \"eyJhbGciOiJIUzI1NiIs...\"\n  }'\n",[81,545,546,559,571,579,584],{"__ignoreMap":115},[119,547,548,550,552,554,557],{"class":121,"line":122},[119,549,126],{"class":125},[119,551,130],{"class":129},[119,553,133],{"class":129},[119,555,556],{"class":129}," https://api.momohub.com/v1/auth/refresh",[119,558,140],{"class":139},[119,560,561,563,565,567,569],{"class":121,"line":143},[119,562,146],{"class":129},[119,564,150],{"class":149},[119,566,153],{"class":129},[119,568,156],{"class":149},[119,570,140],{"class":139},[119,572,573,575,577],{"class":121,"line":161},[119,574,164],{"class":129},[119,576,167],{"class":149},[119,578,170],{"class":129},[119,580,581],{"class":121,"line":173},[119,582,583],{"class":129},"    \"refreshToken\": \"eyJhbGciOiJIUzI1NiIs...\"\n",[119,585,586,588],{"class":121,"line":179},[119,587,188],{"class":129},[119,589,191],{"class":149},[70,591,593],{"id":592},"token-有效期","Token 有效期",[595,596,597,610],"table",{},[598,599,600],"thead",{},[601,602,603,607],"tr",{},[604,605,606],"th",{},"Token 类型",[604,608,609],{},"有效期",[611,612,613,622],"tbody",{},[601,614,615,619],{},[616,617,618],"td",{},"Access Token",[616,620,621],{},"1 小时",[601,623,624,627],{},[616,625,626],{},"Refresh Token",[616,628,629],{},"7 天",[631,632,633],"blockquote",{},[61,634,635],{},"建议在 Access Token 过期前 30 秒主动刷新，避免请求中断。",[637,638,639],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":115,"searchDepth":122,"depth":143,"links":641},[642,643,644,645,646],{"id":72,"depth":143,"text":72},{"id":104,"depth":143,"text":105},{"id":516,"depth":143,"text":517},{"id":531,"depth":143,"text":532},{"id":592,"depth":143,"text":593},"Token 认证机制和刷新流程","md",null,{},{"icon":18},{"title":15,"description":647},"PkyxmdfEKrPoUHvKTLnCiaXoUOnVyk73JDMfryjWKh8",[655,657],{"title":10,"path":11,"stem":12,"description":656,"icon":13,"children":-1},"了解如何开始使用 MomoHub API",{"title":20,"path":21,"stem":22,"description":658,"icon":23,"children":-1},"API 错误码和错误响应格式",1772535254109]