【问题标题】:How to detect redirect from external URI opened from Electron desktop application如何检测从 Electron 桌面应用程序打开的外部 URI 的重定向
【发布时间】:2017-11-19 13:10:21
【问题描述】:

我正在使用手动 facebook 登录 (https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#dialogresponse) 构建一个 react / electron 桌面应用程序。

通过单击按钮,我使用shell.openExternal 方法打开登录对话框,但我需要检测此重定向,然后从 URI 中读取访问令牌。我不知道该怎么做(在这里反应 newbee)。

哪个应该是最好的方法?

提前致谢。

【问题讨论】:

    标签: reactjs electron facebook-login desktop-application


    【解决方案1】:

    正确答案是按照本教程进行操作:https://competenepal.com/lets-make-a-facebook-login-system-in-electron-that-actually-works/

    我只需要实现这部分:

    var options = {
      client_id: '',
      scopes: "public_profile",
      redirect_uri: "https://www.facebook.com/connect/login_success.html"
    };
    var authWindow = new BrowserWindow({ width: 450, height: 300, show: false,
      parent: mainWindow, modal: true, webPreferences: {nodeIntegration:false} });
    var facebookAuthURL = "https://www.facebook.com/v2.8/dialog/oauth?client_id=" + options.client_id + "&redirect_uri=" + options.redirect_uri + "&response_type=token,granted_scopes&scope=" + options.scopes + "&display=popup";
    authWindow.loadURL(facebookAuthURL);
    authWindow.show();
    authWindow.webContents.on('did-get-redirect-request', function (event, oldUrl, newUrl) {
      var raw_code = /access_token=([^&]*)/.exec(newUrl) || null;
      var access_token = (raw_code && raw_code.length > 1) ? raw_code[1] : null;
      var error = /\?error=(.+)$/.exec(newUrl);
    
      if(access_token) {
        FB.setAccessToken(access_token);
        FB.api('/me', { fields: ['id', 'name', 'picture.width(800).height(800)'] }, function (res) {
          console.log('response is:', res);
        });
        authWindow.close();
      }
    });
    

    【讨论】:

    • 好答案。不幸的是,目前(2019 年 9 月),尝试从电子进行 oauth 会产生“您正在尝试从不允许我们确保您的帐户安全的浏览器或应用程序登录”。谷歌的回应。现在,我想我只需要使用 Electron.shell 在用户的默认浏览器中打开 oauth。
    • @junvar 重定向后如何导航回应用完成认证?
    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    相关资源
    最近更新 更多