首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >世博电子OAuth2登录

世博电子OAuth2登录
EN

Stack Overflow用户
提问于 2021-08-26 12:18:24
回答 1查看 407关注 0票数 0

我正在尝试为多个不同的平台(包括桌面)构建一个应用程序--使用电子技术。现在,我遇到了问题,继续一个日志记录过程,直到结束。

我知道电子使用世博反应本地Web功能,但我不明白如何在重定向之后继续日志记录过程。

这就是我尝试过的:

代码语言:javascript
复制
const useProxy = Platform.OS !== 'web';

export function AuthScreen() {
const {nextState} = useAuth();

    const discovery = AuthSession.useAutoDiscovery('https://my-open-id.url');

    const redirectUri = AuthSession.makeRedirectUri({
        useProxy,
    });

    // Create and load an auth request
    const [request, , promptAsync] = AuthSession.useAuthRequest(
        {
            clientId: 'client-id',
            clientSecret: 'client-secret',
            redirectUri,
            scopes: ['openid', 'profile', 'email', 'offline_access'],
        },
        discovery
    );

    const login = useCallback(async () => {
        const result = await promptAsync({useProxy});
        console.log({result});

        if (!result) {
            return;
        }

        switch (result.type) {
            case "cancel":
            case "dismiss":
                return;
            case "error":
                return;
            case "locked":
                return;
            case "success":
                const token = result.authentication;
                nextState(token);
                return;
        }
    }, [promptAsync]);

    if (Platform.OS !== 'web') {
        useEffect(() => {
            WebBrowser.warmUpAsync();
            return () => {
                WebBrowser.coolDownAsync();
            }
        }, []);
    }

    return (
        <View style={{flex: 1, alignItems: 'center', justifyContent: 'center'}}>
            <Text>Auth Screen</Text>
            <Button title="Login!" disabled={!request} onPress={login}/>
        </View>
    );
}

每当我点击Login按钮时,我就被重定向到我的OAuth2服务器,并且我可以登录。在那之后,我应该被重定向到我的应用程序,但没有。

在登录过程之后,新窗口仍然存在,应用程序的另一个实例继续存在。

我也在寻找电子特性,以了解如何对其进行足够的黑客攻击,这样就有了充分的工作流程,但我仍然不知道如何从代码的反应本机部分访问电子的主要进程。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-26 13:40:37

世博正在使用一个私用URI计划来监听登录共鸣,所以首先要确保您已经根据文档正确注册了它。

接收深度LINKS

一旦你知道了你的应用程序的方案,一个简单的测试方法就是通过这样的命令来测试它,这取决于你是运行在Mac上还是运行在Windows上:

代码语言:javascript
复制
open x-mycompany-desktopapp:/somepath
start x-mycompany-desktopapp:/somepath

我将确保登录发生在系统浏览器中,正如RFC8252中所建议的那样。避免登录反应本机窗口。

在浏览器中,您应该看到提示将登录响应返回到应用程序。有一些截图在我的博客帖子为一个普通的电子OAuth安全的应用程序。

电子多实例逻辑

我的电子OAuth桌面代码示例使用了私有URI方案,并处理了您提到的多实例问题--参见这段代码requestSingleInstanceLock的使用。

希望这些笔记能给你一些线索和可能的行动。在我开发这个程序的时候,一个很大的里程碑就是能够从我的main.ts源文件中捕获日志语句!

OAuth在UI中是很难实现的,有时更高层次的技术(如世博)几乎没有什么可见性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68938385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档