API Google, OAuth2, перенаправить URL-адреса [дубликаты]

Иногда доступ к вложенному объекту с использованием строки может быть желательным. Простым подходом является первый уровень, например

var obj = { hello: "world" };
var key = "hello";
alert(obj[key]);//world

. Но это часто бывает не со сложным json. По мере усложнения json подходы к определению значений внутри json также становятся сложными. Рекурсивный подход для навигации по json лучше всего, и то, как эта рекурсия используется, будет зависеть от типа поиска данных. Если имеются условные операторы, поиск json может быть хорошим инструментом для использования.

Если доступное свойство уже известно, но путь является сложным, например, в этот объект

var obj = {
 arr: [
    { id: 1, name: "larry" },    
    { id: 2, name: "curly" },
    { id: 3, name: "moe" }
 ]
};

И вы знаете, что хотите получить первый результат массива в объекте, возможно, вы хотели бы использовать

var moe = obj["arr[0].name"];

. Однако это приведет к исключение, поскольку нет свойства объекта с этим именем. Решение, чтобы иметь возможность использовать это, было бы сгладить аспект дерева объекта. Это можно сделать рекурсивно.

function flatten(obj){
 var root = {};
 (function tree(obj, index){
   var suffix = toString.call(obj) == "[object Array]" ? "]" : "";
   for(var key in obj){
    if(!obj.hasOwnProperty(key))continue;
    root[index+key+suffix] = obj[key];
    if( toString.call(obj[key]) == "[object Array]" )tree(obj[key],index+key+suffix+"[");
    if( toString.call(obj[key]) == "[object Object]" )tree(obj[key],index+key+suffix+".");   
   }
 })(obj,"");
 return root;
}

Теперь сложный объект может быть сплющен

var obj = previous definition;
var flat = flatten(obj);
var moe = flat["arr[0].name"];//moe

Вот jsFiddle Demo этого подхода.

6
задан GoTop 20 March 2016 в 03:46
поделиться

1 ответ

В поле «Авторизованные перенаправления URI» есть текст справки, в котором четко указано, что вы не можете использовать общедоступные IP-адреса:

Авторизованные URI-адреса перенаправления

Для использования с запросами с веб-сервера. Это путь в приложении, к которому пользователи перенаправляются после того, как они прошли аутентификацию с помощью Google. Путь будет добавлен с помощью кода авторизации для доступа. Должен иметь протокол. Не может содержать фрагменты URL или относительные пути. Не может быть общедоступным IP-адресом.

127.0.0.1 не является общедоступным IP, но loopback , поэтому http://127.0.0.1/ callback работает нормально. localhost также можно использовать: http: // localhost / callback

За исключением привязки общего домена верхнего уровня к моему серверу, что еще я могу сделать?

Вы можете использовать бесплатный DNS с помощью http://xip.io/ . Поэтому для IP 99.99.99.99 используйте http://99.99.99.99.xip.io/callback . И это будет разрешено http://99.99.99.99/callback .

12
ответ дан polart 25 August 2018 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: