【问题标题】:How to get success/fail callback for `revoke` request with Google OAuth2 REST API?如何使用 Google OAuth2 REST API 获取“撤销”请求的成功/失败回调?
【发布时间】:2020-08-02 23:25:24
【问题描述】:

由于 Google 用于撤销令牌的 OAuth 2.0 端点不支持 CORS,并且应由 POST 提出请求,他们建议使用表单并将其提交到端点而不是使用 @987654323 @方法发布请求。

OAuth 2.0 for Client Web Applications / revoke 文档状态:

如果调用成功,则响应状态码将为 200。对于错误情况,HTTP 状态码将为 400。

但是通过在 Web 客户端上仅使用 js 我如何确定请求是成功还是失败

我尝试将结果加载到弹出窗口但因为它使用不同的来源,所以存在 CORS 问题。并且内容不能被JS访问,也不能监听loaderror事件。

或者一般来说,如何向不受支持的 CORS 源发出 POST 请求并知道它是成功还是失败

function revokeAccess(accessToken) {
  // Google's OAuth 2.0 endpoint for revoking access tokens.
  var revokeTokenEndpoint = 'https://oauth2.googleapis.com/revoke';

  // Create <form> element to use to POST data to the OAuth 2.0 endpoint.
 var form = document.createElement('form');
    form.method = method;
    form.action = src;
    form.target = 'oauthWindow';
    for (let k in obj) {
        var tokenField = document.createElement('input');
        tokenField.type = 'hidden';
        tokenField.name = k;
        tokenField.value = obj[k];
        form.appendChild(tokenField);
    }

    document.body.appendChild(form);
    form.submit();  
 }

【问题讨论】:

    标签: javascript oauth-2.0 google-oauth google-signin revoke-token


    【解决方案1】:

    只知道fail 的请求success 是否这样做:

      await fetch(authSetting.revoke_endpoint, {
            method: 'POST',
            mode: 'no-cors',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            },
            body: `token=${payload.access_token}`
        });
    
    

    no-cors 模式,让请求出去但隐藏响应。但你仍然知道它是 success 还是 fail。级长

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多