授权 chrome 应用程序在 vkontakte api 中独立运行

authorize chrome app as standalone in vkontakte api

我正在尝试在 chrome 应用程序中使用 vk.messages api,如下所示:

app.login = function () {
  var link = 'https://oauth.vk.com/authorize?' +
    'client_id=4837072' +
    '&scope=friends,docs,status,messages,notifications,' +
    '&redirect_uri=' + 'https://oauth.vk.com/blank.html' +
    '&display=popup' +
    '&v=API_VERSION' +
    '&response_type=token';
  var width = 655;
  var height = 539;
  var left = (screen.width / 2) - (width / 2);
  var top = (screen.height / 2) - (height / 2);
  chrome.identity.launchWebAuthFlow({
    'url': link,
    'interactive': true
  }, function (redirect_url) {
    // redirect_url is undefined
    console.log(redirect_url);
  });
};

It needs to set auth redirect_uri this way "https://oauth.vk.com/blank.html", but chrome.identity api 使用 "https://.chromiumapp.org/"。因此,显示了 vk auth window 并且重定向有效,但是 chrome 无法确定 auth 重定向,并且不会使用重定向 url 进行回调。在 chrome 应用程序中是否有任何其他方法可以重定向 url?

嗯,我知道你要去哪里 "it needs to set redirect_uri this way":

redirect_uri=https://oauth.vk.com/blank.html  

It is a mandatory condition for methods which descriptions say that they are available only for Desktop applications.

恐怕无法覆盖 identity API 使用的 URL。

在这种情况下,您可以采用与 Silver Bird Twitter 客户端相同的路线:在目标地址中插入 Content Script。从那里您可以提取所需的令牌。

编辑:我忘了您正在编写 Chrome 应用程序。然后您应该尝试使用 <webview> 及其脚本注入功能。

这意味着您必须在没有 chrome.identity 帮助的情况下自己进行 OAuth,但至少这是一个解决方案。