Api вконтакте

Помогите пожалуйста с API вконтакте
Почему в консоле пишет openapi.js:563 Open api access error?
Почему раньше работало, а сейчас нет?

   <!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
<script src="http://vk.com/js/api/openapi.js"></script>

<script language='javascript'>
 VK.init({
    apiId: 5746407
  });

  let cb = response => {
    console.log(response);
    if (response.session) {
      console.log('авторизация прошла успешно');
    } else {
      console.log('ошибка авторизации');
    }
  };

  VK.Auth.login(cb);

	//VK.Auth.revokeGrants()
</script>
	
</body>
</html>

Ты когда получал appId, заводил его для какого домена? Похоже что скрипт API запустится только с определенного домена. Для этого надо запустить http сервер, например с помощью https://github.com/tj/serve из папки с html-кой кода что ты описал в теле вопроса, и настроить в файле hosts запрос на адрес, на который ты брал ключ.

Надо отсортировать массивы, по убыванию возраста. Я их отсортировал, но почему они не отсортировались?

Первые массивы нормально сортируются, а те, которые сами подгружаются, то они не сортируются

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Document</title>
    </head>
    <body>
    <script src="http://vk.com/js/api/openapi.js"></script>

    	<script>

    	function foo() {

    	VK.init({
    			apiId: 5580872
		});


	VK.Auth.login(function(response){
	
		if(response.session){
		 
		 
	
			VK.api('friends.get', {'user_id' : '26291131', 'fields' : 'bdate'}, response => {
				if(response.error){
					alert(response.error.error_msg);
				}
				else{
					let userData = response.response;
					var arrUser = []
					var arrAge = [];
					var arrAge2 = [];
					var now = new Date(); 
					var god = now.getFullYear()
					
					
					
					
					for(var h = 0; h < userData.length; h++){
						arrUser.push(userData[h].first_name + ' ' + userData[h].last_name)
						
						if(typeof userData[h].bdate == 'string' && userData[h].bdate.split('.')[2]){
						arrAge.push(userData[h].first_name + ' ' + userData[h].last_name + ' ' + (god - parseInt((userData[h].first_name + ' ' + userData[h].last_name + ' ' + userData[h].bdate.split('.')[2]).split(' ')[2])))
							
						}
					}
					
					for(var c = 0; c < arrAge.length; c++){
						arrAge2.push(arrAge[c].split(' '))
						
					}
					
					
					//сортировка по возрасту
					
				
						arrAge2.sort(function(a, b){
						return a[2] < b[2]
					})
    
			
					
					for(var i = 0; i < arrAge2.length; i++){
						console.log(arrAge2[i])
					}
					
					
					
				}
			});
			

		}
		else{
			alert('Не удалось авторизироваться')
		}
	}, 2);
}
foo()



//точно такойже массив

var arr = [
  ['вапкр', 'птртвы',  '26'],
  ['иавовы', 'татьправпа', '14'],
  ['пролрлбпвы', 'Ячсми', '22'],
  ['енгщз', 'выапрпр','22'],
  ['еншщшз', 'олдщне', '23'],
  ['ппппппп', 'истттттт', '14'],
  ['уууууу', 'ллллллл',  '20']
];

	arr.sort(function(a, b){
						return a[2] < b[2]
					})
    
			
					
					for(var i = 0; i < arr.length; i++){
						console.log(arr[i])
					}
					
		console.log('-------------------------')	

	</script>

</body>
</html>