mirror of
https://github.com/Wanxp/obsidian-douban.git
synced 2026-04-04 08:38:41 +08:00
fix: douban login
This commit is contained in:
parent
01a386dd6b
commit
938d7f6658
@ -35,12 +35,22 @@ export default class SettingsManager {
|
||||
if (this.settings.loginHeadersContent) {
|
||||
// return StringUtil.parseHeaders(this.settings.loginHeadersContent);
|
||||
return JSON.parse(this.settings.loginHeadersContent);
|
||||
}else if (this.settings.loginCookiesContent) {
|
||||
return {Cookie: this.settings.loginCookiesContent, ...DEFAULT_DOUBAN_HEADERS};
|
||||
}else {
|
||||
return DEFAULT_DOUBAN_HEADERS;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
getHeadersByCookie(cookie:string):object {
|
||||
if (cookie) {
|
||||
return {...DEFAULT_DOUBAN_HEADERS, Cookie: cookie};
|
||||
}else {
|
||||
return DEFAULT_DOUBAN_HEADERS;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
async updateSetting(key: keyof DoubanPluginSetting, value:any) {
|
||||
|
||||
@ -47,41 +47,15 @@ export default class UserComponent {
|
||||
|
||||
needLogin() {
|
||||
const headers:any = this.settingsManager.getSetting('loginHeadersContent') ;
|
||||
if(!headers) {
|
||||
const cookies:any = this.settingsManager.getSetting('loginCookiesContent') ;
|
||||
|
||||
if(!headers && !cookies) {
|
||||
return false;
|
||||
}
|
||||
return !this.isLogin();
|
||||
}
|
||||
|
||||
async loginByCookie():Promise<User> {
|
||||
let cookie = this.settingsManager.getSetting('loginCookiesContent');
|
||||
if(!cookie) {
|
||||
this.settingsManager.debug('主界面:loginByCookie:无豆瓣cookies信息,获取用户信息失败');
|
||||
return new User();
|
||||
}
|
||||
this.settingsManager.debug('主界面:loginByCookie:豆瓣cookies信息正常,尝试获取用户信息');
|
||||
await this.loadUserInfo(cookie).then(user => {
|
||||
this.user = user;
|
||||
this.settingsManager.debug(`主界面:loginByCookie:豆瓣cookies信息正常,${user&&user.id?'获取用户信息成功id:'+ StringUtil.confuse(user.id) + ',用户名:'+ StringUtil.confuse(user.name) :'获取用户信息失败'}`);
|
||||
});
|
||||
return this.user;
|
||||
}
|
||||
async loginByHeaders() {
|
||||
// @ts-ignore
|
||||
let headersStr:string = this.settingsManager.getSetting('loginHeadersContent');
|
||||
if(!headersStr) {
|
||||
this.settingsManager.debug('主界面:loginByCookie:无豆瓣headers信息,获取用户信息失败');
|
||||
return new User();
|
||||
}
|
||||
this.settingsManager.debug('主界面:loginByCookie:豆瓣cookies信息正常,尝试获取用户信息');
|
||||
const headers:object = JSON.parse(headersStr);
|
||||
await this.loadUserInfoByHeaders(headers).then(user => {
|
||||
this.user = user;
|
||||
this.settingsManager.debug(`主界面:loginByCookie:豆瓣cookies信息正常,${user&&user.id?'获取用户信息成功id:'+ StringUtil.confuse(user.id) + ',用户名:'+ StringUtil.confuse(user.name) :'获取用户信息失败'}`);
|
||||
});
|
||||
return this.user;
|
||||
|
||||
}
|
||||
|
||||
async loginHeaders(headers: object):Promise<User> {
|
||||
if(!headers) {
|
||||
@ -105,18 +79,14 @@ export default class UserComponent {
|
||||
}
|
||||
|
||||
async loginCookie(cookie: any):Promise<User> {
|
||||
if(!cookie) {
|
||||
return new User();
|
||||
}
|
||||
this.settingsManager.debug('配置界面:loginCookie:豆瓣cookies信息正常,尝试获取用户信息,cookie:' + cookie);
|
||||
await this.loadUserInfo(cookie).then(user => {
|
||||
this.user = user;
|
||||
this.settingsManager.debug(`配置界面:loginCookie:豆瓣cookies信息正常,${user&&user.id?'获取用户信息成功id:'+ StringUtil.confuse(user.id) + ',用户名:'+ StringUtil.confuse(user.name) :'获取用户信息失败'}`);
|
||||
});
|
||||
if(this.user) {
|
||||
this.settingsManager.updateSetting('loginCookiesContent', cookie);
|
||||
}
|
||||
return this.user;
|
||||
const headers: object = this.settingsManager.getHeadersByCookie(cookie);
|
||||
return this.loginHeaders(headers)
|
||||
.then(user => {
|
||||
if(this.user) {
|
||||
this.settingsManager.updateSetting('loginCookiesContent', cookie);
|
||||
}
|
||||
return user;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -157,4 +127,17 @@ export default class UserComponent {
|
||||
};
|
||||
|
||||
|
||||
async login() {
|
||||
let headers:object = this.settingsManager.getHeaders();
|
||||
if(!headers) {
|
||||
this.settingsManager.debug('主界面:login:无豆瓣信息,获取用户信息失败');
|
||||
return new User();
|
||||
}
|
||||
this.settingsManager.debug('主界面:login:豆瓣headers信息正常,尝试获取用户信息');
|
||||
await this.loadUserInfoByHeaders(headers).then(user => {
|
||||
this.user = user;
|
||||
this.settingsManager.debug(`主界面:loginByCookie:豆瓣cookies信息正常,${user&&user.id?'获取用户信息成功id:'+ StringUtil.confuse(user.id) + ',用户名:'+ StringUtil.confuse(user.name) :'获取用户信息失败'}`);
|
||||
});
|
||||
return this.user;
|
||||
}
|
||||
}
|
||||
|
||||
@ -209,7 +209,7 @@ export default class DoubanPlugin extends Plugin {
|
||||
this.netFileHandler = new NetFileHandler(this.fileHandler);
|
||||
if (this.userComponent.needLogin()) {
|
||||
try {
|
||||
await this.userComponent.loginByCookie();
|
||||
await this.userComponent.login();
|
||||
}catch (e) {
|
||||
log.debug(i18nHelper.getMessage('100101'));
|
||||
}
|
||||
@ -280,38 +280,19 @@ export default class DoubanPlugin extends Plugin {
|
||||
}
|
||||
|
||||
async checkLogin(context: HandleContext):Promise<boolean> {
|
||||
// return await this.checkLoginByCookie(context);
|
||||
return await this.checkLoginByHeaders(context);
|
||||
|
||||
}
|
||||
|
||||
private async checkLoginByCookie(context: HandleContext) {
|
||||
this.settingsManager.debug('主界面:同步时的登录状态检测');
|
||||
if (!context.userComponent.needLogin()) {
|
||||
this.settingsManager.debug('主界面:同步时的登录状态检测完成: 无用户信息, 尝试使用cookie获取用户信息');
|
||||
await context.userComponent.loginByCookie();
|
||||
this.settingsManager.debug('主界面:同步时的登录状态检测完成: 无用户信息, 尝试获取用户信息');
|
||||
await context.userComponent.login();
|
||||
}
|
||||
if (!context.userComponent.isLogin()) {
|
||||
this.settingsManager.debug('主界面:同步时的登录状态检测完成: 尝试使用cookie获取用户信息失败');
|
||||
this.settingsManager.debug('主界面:同步时的登录状态检测完成: 尝试获取用户信息失败');
|
||||
new Notice(i18nHelper.getMessage('140303'));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private async checkLoginByHeaders(context: HandleContext) {
|
||||
this.settingsManager.debug('主界面:同步时的登录状态检测');
|
||||
if (!context.userComponent.needLogin()) {
|
||||
this.settingsManager.debug('主界面:同步时的登录状态检测完成: 无用户信息, 尝试使用headers获取用户信息');
|
||||
await context.userComponent.loginByHeaders();
|
||||
}
|
||||
if (!context.userComponent.isLogin()) {
|
||||
this.settingsManager.debug('主界面:同步时的登录状态检测完成: 尝试使用headers获取用户信息失败');
|
||||
new Notice(i18nHelper.getMessage('140303'));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private initSyncDefaultSettings(syncConfig: SyncConfig) {
|
||||
syncConfig.dataFilePath = syncConfig.dataFilePath ? syncConfig.dataFilePath : DEFAULT_SETTINGS.dataFilePath;
|
||||
|
||||
@ -39,7 +39,6 @@ export default class HttpUtil {
|
||||
response.on("end", function () {
|
||||
let data = Buffer.concat(chunks, size)
|
||||
let html = data.toString()
|
||||
console.log(html)
|
||||
resolve(html)
|
||||
})
|
||||
})
|
||||
@ -52,7 +51,6 @@ export default class HttpUtil {
|
||||
* @param headers 请求参数
|
||||
* @param settingsManager 设置管理器
|
||||
*/
|
||||
// Cookie: 'll="108296"; bid=xHRJLeWBrjQ; _pk_id.100001.8cb4=f8f83e81ec224a1a.1691572669.; __utmv=30149280.13103; __yadk_uid=ce95W7OsgT0iKFceWgbMSUdw1oOqxNTk; __gads=ID=62585f60f3f637d0-2234f63fc6e200a5:T=1691572672:RT=1691572672:S=ALNI_MaIqTxSWHsfpnX9nAmMHcPQEsaezg; __gpi=UID=00000c29a9f98e5b:T=1691572672:RT=1691572672:S=ALNI_MbLAq8XNoKrRPKNqGCMdgXSPZvidw; ap_v=0,6.0; __utma=30149280.135860784.1691572641.1691572641.1694509646.2; __utmc=30149280; __utmz=30149280.1694509646.2.2.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; _pk_ref.100001.8cb4=%5B%22%22%2C%22%22%2C1694509648%2C%22https%3A%2F%2Fmovie.douban.com%2Ftv%2F%22%5D; _pk_ses.100001.8cb4=1; __utmt=1; dbcl2="131038721:LUssju34QFw"; ck=dCQj; push_noty_num=0; push_doumail_num=0; __utmb=30149280.3.10.1694509646'
|
||||
public static httpRequestGetBuffer(url: string, headers: any, settingsManager?: SettingsManager): Promise<ArrayBuffer> {
|
||||
let options = {
|
||||
headers: headers
|
||||
|
||||
Loading…
Reference in New Issue
Block a user