2016-12-06 8 views
1

Я пишу специальную библиотеку скриптов Google для использования в нескольких листах Google. Он использует Google Script OAuth2 library для управления потоком OAuth с помощью Smartsheet API. К сожалению, он возвращает «URI Redirect отсутствует или недействителен».Использование потока OAuth2 в библиотеке скриптов Google возвращает «Redirect или Missing URI»

У меня был поток OAuth2, хорошо работающий в одном сценарии для работы с электронными таблицами, но он прекратил работать, когда я переместил код в библиотеку.

Я DID обновления перенаправлять URI в меню для разработчиков SmartSheet, и я проверил, что URI вернулся из .getRedirectUri() была одна связана с моим приложением в регистрации приложения SmartSheet в.

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

Моя цель с библиотекой заключается в том, что ее можно использовать из нескольких листов для доступа к API Smartsheet и тем самым помешать мне создать уникальное приложение (с уникальным URI переадресации) в меню разработчика Smartsheet для каждого листа, который может когда-либо используйте этот код.

Возможно ли это? Что я могу сделать неправильно, что он не нравится URI перенаправления?

+1

Когда вы достигнете страниц, где вы видите «Перенаправление отсутствующего или некорректный URI» сообщение, делает значение для redirect_uri строки запроса пар в URL соответствует значение, возвращаемое из .getRedirectUri()? – stmcallister

ответ

0

При разработке библиотеки лучше всего быть агностиком для источника токена. Общий шаблон проектирования заключается в том, чтобы пользователь проходил функцию, которую ваша библиотека вызывает, чтобы получить токен. Это позволяет пользователю выбирать, как и где выполняется рабочий процесс OAuth.

myLibrary.gs

var tokenService_ = function(){return null}; 

function setTokenService(tokenService){ 
    tokenService_ = tokenService 
} 

//some hypothetical function in your library 
function getData(options){ 
    return fetchFromAPI(options,tokenService_()); 
} 

userCode.gs

function requestData(){ 
    myLibrary.setTokenService(function(){ return ScriptApp.getOAuthToken()}); 
    var data = myLibrary.getData("foo"); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^