最近使用的oneindex出現白屏了,總是一段時間會出現,之前搜索過解決方案,沒有找到一個說明問題原因的答案,于是自己動手試試。如果你不需要了解這個過程直接看后面修改方法。
思路
oneindex出現白屏后,我嘗試在postman上使用base.php里面的refreshtoken重新獲取accesstoken,提示refreshtoken是2月多創建的,refreshtoken過期了,算一下refreshtoken是有限期大概是三個月。這時我就重新捋了一下oneindex的授權過程:
1)在https://aad.portal.azure.com創建一個應用程序,獲得一組應用程序ID/密鑰SK,設置回調地址,配置權限(一般好像給委托權限【需要賬號登錄】,給文件讀寫、離線、用戶資料權限),安裝時使用。
2)安裝時賬號登錄授權獲取一個code →→用到 微軟oauth接口+應用程序ID+權限+回調地址
3)程序使用 code, 獲取 refreshtoken,這個refreshtoken保存在config/base.php里面 →→用到 微軟oauth接口+應用程序ID+SK+ 回調地址 + code
4)程序使用 refreshtoken, 獲取 accesstoken和一個新的refreshtoken,這個accesstoken和新的refreshtoken保存在config/token.php里面 →→用到 微軟oauth接口+應用程序ID+SK + 回調地址 + refreshtoken
5)程序使用 accesstoken獲取文件 →→用到微軟graph接口+ accesstoken
6)刷新文件,程序檢測config/token.php里面過期時間,小于600就刷新token,重復第四步的過程(使用base.php里面的refreshtoken)
問題就出現在這個過期的refreshtoken上,之前一直聽說refreshtoken長期有效,用獲取新的accesstoken,卻沒注意refreshtoken獲取accesstoken的過程也是會生成新的refreshtoken,而oneindex并沒有把新的refreshtoken寫到base.php用于下次刷新,一直使用第一次授權時的refreshtoken。這就好辦,把刷新后的refreshtoken寫進base.php應該就可以解決了。
解決
修改lib/onedrive.php,查找 config(‘@token’, $token);
在下面加一行 config(‘refresh_token’, $token[‘refresh_token’]);
![圖片[1]-解決oneindex顯示空白頁-白屏問題](http://www.oilmaxhydraulic.com.cn/wp-content/uploads/2022/02/08.png)














暫無評論內容