【问题标题】:API on subdomain and oauth子域和 oauth 上的 API
【发布时间】:2015-06-10 03:06:39
【问题描述】:

我在子域上有一个 api:用 symfony2 编写的 api.exemple.com 和我在 exemple.com 上的主要应用程序(SPA - AngularJs)。

我想允许用户将他们的 Facebook 帐户与他们的本地帐户相关联。我不知道如何继续通过我的应用进行身份验证并使用第三方 oauth 提供程序。

你有什么线索吗?

谢谢

【问题讨论】:

    标签: angularjs api symfony oauth


    【解决方案1】:

    在角度方面,首先打开一个新窗口并向您的 oauth 处理程序发送一个 get 请求:

    self.oauthConnect = function(provider)
    {
      var url = apiPrefix + '/oauth/tokens/'. provider;
      oauthWindow = $window.open(url,'_blank', 'height=600, width=600, top=100, left=300, modal=yes');
      oauthWindow.focus();
    };
    

    然后您的 PHP api 站点将重定向到 oauth 提供程序站点(即 facebook)。我们使用一个新的客户端窗口,因此尽管重定向,我们的 SPA 仍会继续运行。然后提供者显示他们的登录屏幕并使用 oauth 令牌信息进行重定向。

    您的 PHP api 站点会执行所需的操作并生成实际的授权令牌(提示:使用 json Web 令牌)。然后该站点将一个 html 页面返回给您的 Angular 应用程序。

    <body>
      <script>
        window.opener.oauthCallback('<?php echo $oauthToken; ?>');
      </script>
    </body>
    

    然后将使用 oauth 令牌调用您的角度控制器(打开窗口)。

    $window.oauthCallback = function(oauthToken) 
    {
      oauthWindow.close();
      oauthWindow = null;
      authManager.oauthToken = oauthToken;
    
      self.oauthSubmit();
    };
    

    简单吧?不是真的,但它有效。就我而言,我右转并:

    POST /auth/tokens/oauthToken 
    

    获取真正的应用程序令牌。这样我的 oauth 服务就可以用于多个应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-12
      • 1970-01-01
      • 1970-01-01
      • 2020-07-27
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多