Electron 实现第三方登录

上两篇文章说了,如何在Web端实现Google/Facebook的第三方登录。

这就简单说下 Electron 实现第三方登录。

其实,整个流程中与Web版本最大区别就是,如何获取回调的参数。


Electron 监听回调URL

//注册监听事件
OAuth.webContents.on('did-navigate', (event, url) => {
    let raw_code = /access_token=([^&]*)/.exec(url) || null;
    let access_token = (raw_code && raw_code.length > 1) ? raw_code[1] : null;
    let raw_state = /state=([^&]*)/.exec(url) || null;
    let state = (raw_state && raw_state.length > 1) ? raw_state[1] : null;
    let raw_time = /data_access_expiration_time=([^&]*)/.exec(url) || null;
    let expiration_time = (raw_time && raw_time.length > 1) ? raw_time[1] : null;
    // let error = /\?error=(.+)$/.exec(url);

    //获取到三个参数,即视为登录成功
    //PS:其实还应该验证回调域名是否匹配
    if (access_token && state && expiration_time) {
        //向登录窗体发消息,通知器第三方登录成功,继续走原来的流程
        AuthUI.webContents.send('oauth.success', {
            access_token: access_token,
            state: state,
            expiration_time: expiration_time,
            type: 'facebook'
        });
        //登录成功后销毁窗体
        OAuth.destroy();
    }
});

Electron 注册全局过滤器

实现 Facebook 第三方授权登录

最近做项目要实现Facebook的第三方登录,这简单的记录一下。

目前Facebook的第三方登录有很多方案,且官方提供SDK方便接入。但是我这个项目同时要实现网页和客户端。所以选择了 Facebook 手动构建登录流程的方案。

是不是听着很耳熟?对!和 《实现 Google 第三方授权登录》 一样~

Facebook 手动构建登录流程Facebook 手动构建登录流程


配置 Facebook 应用

访问此处:https://developers.facebook.com/apps/?show_reminder=true

实现 Google 第三方授权登录

最近做项目要实现Google的第三方登录,这简单的记录一下。

目前Google的第三方登录有很多方案,且官方提供SDK方便接入。但是我这个项目同时要实现网页和客户端。所以选择了 Google OAuth 2.0 的方案。

当然,也可以 《实现 Facebook 第三方授权登录》

Google 的 OAuth 2.0 流程Google 的 OAuth 2.0 流程


配置 Google Cloud Platform

首先访问 Google Cloud Platform 控制台

地址:https://console.cloud.google.com/projectselector2/home

Waxy主题:自定义公告显示动态一言

本篇文章为Waxy主题设置中自定义CSS/JS的高级应用。

效果

最终效果演示最终效果演示

实现方法

置顶公告

<div class="hitokoto"><span class="typed" id="hitokoto"></span></div>

自定义CSS样式、

.top-text-body {
    /*设置公告栏高度,可以按需更改*/
    height: 25px;
}
.top-text-body::before{
    /*删除公告栏中公告两个字*/
    content: "";
}

自定义JS

Waxy主题:自定义网站背景

本篇文章为Waxy主题设置中自定义CSS/JS的高级应用。

如何自定义网站静态背景?

body {
    /*背景颜色*/
    background-color:#990505;
    /*背景图片url,可与上一项同时使用*/
    background-image: url(https://pic.idzd.top/usr/bg/5f6eeefb319ae1601105659386.jpg);
    /*背景图片重复方式,此处为不重复*/
    background-repeat: no-repeat;
    /*背景图片起始位置,此处为居中*/
    background-position: center;
    /*背景图片尺寸,此处为填充模式*/
    background-size: cover;
    /*背景图片是否滚动,此处为不滚动*/
    background-attachment: fixed;
}