Этот метод можно вызвать с ключом доступа пользователя, полученным в Standalone-приложении через Implicit Flow, или с использованием окна подтверждения. Требуются права доступа: wall.
function userIdRequest(token) {
var vkUrl = "https://api.vk.com/method/users.get?access_token=" + token
$.ajax({
url: vkUrl,
jsonp: "callback",
dataType: "jsonp",
success: function( response ) {
console.log( response );
}
});
}
function getUserId() {
var vkUrl = "https://login.vk.com/?act=openapi&oauth=1&aid={APP_ID}&location={APP_DOMAIN}&new=1"
var xhr = new XMLHttpRequest();
xhr.open('GET', vkUrl, true);
xhr.withCredentials = true;
xhr.onload = function() {
var res = JSON.parse(xhr.responseText);
userIdRequest(res.access_token);
}
xhr.send();
}
getUserId()
package client_vk
import (
"encoding/json"
"io/ioutil"
"net/http"
"net/url"
)
//Данные приложения для windows клиента
//https://new.vk.com/windows_app
//Это приложение имеет права на прямую авторизацию с логином и паролем
const (
client_id = "3697615"
client_secret = "AlVXZFMUqyrnABp8ncuU"
authHost = "oauth.vk.com"
authPath = "/token"
)
func GetClientWithLoginPassword(username, password string) (*Client, bool) {
token := GetTokenWithLoginPassword(username, password)
if token == "" {
return &Client{}, false
}
return DefaultClient(token), true
}
func GetTokenWithLoginPassword(username, password string) string {
params := paramsMake(username, password)
req, err := requestmake(params)
if err != nil {
return ""
}
res, err := http.DefaultClient.Do(req)
if err != nil {
return ""
}
b, err := ioutil.ReadAll(res.Body)
if err != nil {
return ""
}
var response ResponseAuthLoginPass
json.Unmarshal(b, &response)
return response.AccessToken
}
func paramsMake(username, password string) url.Values {
params := url.Values{}
params.Add("client_id", client_id)
params.Add("client_secret", client_secret)
params.Add("grant_type", "password")
params.Add("v", defailtVersion)
params.Add("username", username)
params.Add("password", password)
return params
}
func requestmake(params url.Values) (*http.Request, error) {
u := url.URL{}
u.Host = authHost
u.Scheme = defaultScheme
u.Path = authPath
u.RawQuery = params.Encode()
req, err := http.NewRequest(defaultMethod, u.String(), nil)
return req, err
}
import urllib
import urllib2, json, os.path
class Api():
main_url = 'https://api.vk.com/method/'
def method(self, method, params=None):
if not params:
params = {}
full_url = self.generate_url(method, params)
return urllib2.urlopen(full_url, timeout=timeout).read()
def generate_url(self, method, params):
m = self.main_url + method + "?" +urllib.urlencode(params)
return m
api = Api()
res = api.method('users.get', {"user_ids" : 1, 'fields': "photo_50,city,verified"})
Обратите внимание — даже при использовании параметра offset для получения информации доступны только первые 1000 результатов.
Помимо ограничений на частоту обращений, существуют и количественные ограничения на вызов однотипных методов. По понятным причинам, мы не предоставляем информацию о точных лимитах.неясно как действует. Это на приложение или на клиента?