4

我正在尝试通过他们的 OAuth2 API从 vKontakte(俄罗斯社交网络)获取访问令牌。这就是我打电话的方式:

https://oauth.vk.com/authorize?client_id=12345&scope=wall,offline&redirect_uri=https://www.example.com/oauth/vk.php&display=page&v=5.24&response_type=token

我收到一个访问令牌,但如果我尝试用它发布消息,我会收到以下错误:

//error: Permission to perform this action is denied for non-standalone applications: you should request token using blank.html page.

我的应用程序是一个独立的应用程序 - 为什么我会收到错误消息?

4

4 回答 4

3

我看到您的“client_id”是“12345”——它是假身份证还是真身份证?您是否从 VK 获得了有效的 client_id?

看来您应该通过“blank.html”请求令牌:

https://oauth.vk.com/authorize?client_id=<app_id>&scope=...,wall,...&redirect_uri=https://oauth.vk.com/blank.html&response_type=token

(而不是 vk.php,在你的例子中)

于 2014-09-06T20:38:50.527 回答
2

您遵循的步骤是正确的。

警告信息Please do not copy the data from the address bar to third-party sites. So you can lose access to your account.将显示在屏幕上。而实际的访问令牌将在地址栏上找到。

于 2015-04-08T09:48:39.427 回答
0

这正是它所说的 - 您不能将隐式流用于非独立应用程序。相反,您应该使用授权代码流,这对客户端应用程序更安全。

于 2019-05-26T21:14:43.787 回答
0

经过长时间的研究,我了解到允许在用户墙上发布的 access_token 位于此页面的 URL https://oauth.vk.com/blank.html中,而在此页面上,有一条警告告诉用户

请不要将地址栏中的数据复制到第三方网站。因此,您可能无法访问您的帐户。

因此,作为开发人员,我必须说服用户 vk 是错误的,并且您必须提供 access_token ......完全混乱......它的工作原理很愚蠢

于 2020-12-20T10:50:54.217 回答