mirror of
https://github.com/Wanxp/obsidian-douban.git
synced 2026-04-05 01:28:46 +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) {
|
if (this.settings.loginHeadersContent) {
|
||||||
// return StringUtil.parseHeaders(this.settings.loginHeadersContent);
|
// return StringUtil.parseHeaders(this.settings.loginHeadersContent);
|
||||||
return JSON.parse(this.settings.loginHeadersContent);
|
return JSON.parse(this.settings.loginHeadersContent);
|
||||||
|
}else if (this.settings.loginCookiesContent) {
|
||||||
|
return {Cookie: this.settings.loginCookiesContent, ...DEFAULT_DOUBAN_HEADERS};
|
||||||
}else {
|
}else {
|
||||||
return DEFAULT_DOUBAN_HEADERS;
|
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) {
|
async updateSetting(key: keyof DoubanPluginSetting, value:any) {
|
||||||
|
|||||||
@ -47,41 +47,15 @@ export default class UserComponent {
|
|||||||
|
|
||||||
needLogin() {
|
needLogin() {
|
||||||
const headers:any = this.settingsManager.getSetting('loginHeadersContent') ;
|
const headers:any = this.settingsManager.getSetting('loginHeadersContent') ;
|
||||||
if(!headers) {
|
const cookies:any = this.settingsManager.getSetting('loginCookiesContent') ;
|
||||||
|
|
||||||
|
if(!headers && !cookies) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return !this.isLogin();
|
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> {
|
async loginHeaders(headers: object):Promise<User> {
|
||||||
if(!headers) {
|
if(!headers) {
|
||||||
@ -105,18 +79,14 @@ export default class UserComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async loginCookie(cookie: any):Promise<User> {
|
async loginCookie(cookie: any):Promise<User> {
|
||||||
if(!cookie) {
|
const headers: object = this.settingsManager.getHeadersByCookie(cookie);
|
||||||
return new User();
|
return this.loginHeaders(headers)
|
||||||
}
|
.then(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) {
|
if(this.user) {
|
||||||
this.settingsManager.updateSetting('loginCookiesContent', cookie);
|
this.settingsManager.updateSetting('loginCookiesContent', cookie);
|
||||||
}
|
}
|
||||||
return this.user;
|
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);
|
this.netFileHandler = new NetFileHandler(this.fileHandler);
|
||||||
if (this.userComponent.needLogin()) {
|
if (this.userComponent.needLogin()) {
|
||||||
try {
|
try {
|
||||||
await this.userComponent.loginByCookie();
|
await this.userComponent.login();
|
||||||
}catch (e) {
|
}catch (e) {
|
||||||
log.debug(i18nHelper.getMessage('100101'));
|
log.debug(i18nHelper.getMessage('100101'));
|
||||||
}
|
}
|
||||||
@ -280,38 +280,19 @@ export default class DoubanPlugin extends Plugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async checkLogin(context: HandleContext):Promise<boolean> {
|
async checkLogin(context: HandleContext):Promise<boolean> {
|
||||||
// return await this.checkLoginByCookie(context);
|
|
||||||
return await this.checkLoginByHeaders(context);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private async checkLoginByCookie(context: HandleContext) {
|
|
||||||
this.settingsManager.debug('主界面:同步时的登录状态检测');
|
this.settingsManager.debug('主界面:同步时的登录状态检测');
|
||||||
if (!context.userComponent.needLogin()) {
|
if (!context.userComponent.needLogin()) {
|
||||||
this.settingsManager.debug('主界面:同步时的登录状态检测完成: 无用户信息, 尝试使用cookie获取用户信息');
|
this.settingsManager.debug('主界面:同步时的登录状态检测完成: 无用户信息, 尝试获取用户信息');
|
||||||
await context.userComponent.loginByCookie();
|
await context.userComponent.login();
|
||||||
}
|
}
|
||||||
if (!context.userComponent.isLogin()) {
|
if (!context.userComponent.isLogin()) {
|
||||||
this.settingsManager.debug('主界面:同步时的登录状态检测完成: 尝试使用cookie获取用户信息失败');
|
this.settingsManager.debug('主界面:同步时的登录状态检测完成: 尝试获取用户信息失败');
|
||||||
new Notice(i18nHelper.getMessage('140303'));
|
new Notice(i18nHelper.getMessage('140303'));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
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) {
|
private initSyncDefaultSettings(syncConfig: SyncConfig) {
|
||||||
syncConfig.dataFilePath = syncConfig.dataFilePath ? syncConfig.dataFilePath : DEFAULT_SETTINGS.dataFilePath;
|
syncConfig.dataFilePath = syncConfig.dataFilePath ? syncConfig.dataFilePath : DEFAULT_SETTINGS.dataFilePath;
|
||||||
|
|||||||
@ -39,7 +39,6 @@ export default class HttpUtil {
|
|||||||
response.on("end", function () {
|
response.on("end", function () {
|
||||||
let data = Buffer.concat(chunks, size)
|
let data = Buffer.concat(chunks, size)
|
||||||
let html = data.toString()
|
let html = data.toString()
|
||||||
console.log(html)
|
|
||||||
resolve(html)
|
resolve(html)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -52,7 +51,6 @@ export default class HttpUtil {
|
|||||||
* @param headers 请求参数
|
* @param headers 请求参数
|
||||||
* @param settingsManager 设置管理器
|
* @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> {
|
public static httpRequestGetBuffer(url: string, headers: any, settingsManager?: SettingsManager): Promise<ArrayBuffer> {
|
||||||
let options = {
|
let options = {
|
||||||
headers: headers
|
headers: headers
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user