VK.vom 的浏览器中可能存在隐式 OAuth 2.0 授权流程?

Implicit OAuth 2.0 Grant Flow possible in Browser for VK.vom?

我正在试用 VK.com 的 API,但对他们处理身份验证的方式有疑问。

要访问我需要的资源,我的应用程序必须是 "standalone app",只允许隐式 OAuth 授权流程,重定向到 vk.com/blank.html.

所以从服务器端流程我无法访问最后附加到其 URL 的令牌。显然,这可以在(移动)设备上运行,我可以在其中访问较低级别的浏览器,但我有点迷失了弄清楚它如何从独立的(或没有,我有后端)browser/JS 应用程序运行。或者是否有可能? 到目前为止,我发现的唯一信息总是使用直接用户凭据,而我没有 have/want。我只需要访问附加到重定向到 vk.com/blank.html 的 url 的最终代码,这样我就可以使用它通过后端获取访问令牌(没有 client_secret 在浏览器中)。

您可以在回调 URL 上提供 Javascript,从 URL 的片段中提取 access_token 并将其 POST 发送到您的服务器后端。 OpenID Connect 规范中有执行此操作的示例代码,请参阅 http://openid.net/specs/openid-connect-core-1_0.html#FragmentNotes.

这是另一个使用 HTML 表单而不是 AJAX 调用的示例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript">
      function postOnLoad() {
        encoded = location.hash.substring(1).split('&');
        for (i = 0; i < encoded.length; i++) {
          encoded[i].replace(/\+/g, " ");
          var n = encoded[i].indexOf("=");
          var input = document.createElement("input");
          input.type = "hidden";
          input.name = decodeURIComponent(encoded[i].substring(0, n));
          input.value = decodeURIComponent(encoded[i].substring(n+1));
          document.forms[0].appendChild(input);
        }
        document.forms[0].action = window.location.href.substr(0, window.location.href.indexOf('#'));
        document.forms[0].submit();
      }
    </script>
    <title>Submitting...</title>
  </head>
  <body onload="postOnLoad()">
    <p>Submitting...</p>
    <form method="post" action=""><p><input type="hidden" name="response_mode" value="fragment"></p></form>
  </body>
</html>