2017-01-03 2 views
1

Я не задаю этот вопрос без поиска и чтения документов. Я провел 2 дня. Я уверен, что мне не хватает. Я пытаюсь реализовать google auth на электронной таблице накопителей. Я пробовал все, но все еще получаю сообщение об ошибке (redirect_uri_mismatch). В принципе, я хочу боковую панель с экраном входа. Пользователь нажимает кнопку, запускает auth magic и перенаправляет на другую html-печать «Успех», когда пользователь разрешает доступ.Google script oauth2 Ошибка: redirect_uri_mismatch

  1. Я создал проект в google dev console.
  2. созданные учетные
    2,1 Идентификатор клиента:
    131579675294-jc1c0ckuaa7n7ih7eevg19cisthgt00e.apps.googleusercontent.com

    2,2 Клиент секрет: XaebFsC18qfMmcZJKgokLEYo

  3. набор обратного вызова URI:
    https: // script.google .com/macros/d/MCgMJPIdD1bbeG1PsFaNug8uUifae5TWT/usercallback

  4. ключ проекта: MCgMJPIdD1bbeG1PsFaNug8uUifae5TWT

    скрипт ID: 1DYEShH45-AtikbEwfAG8w9P7Y39FHhCB-nGHWHOW4mUtq5DZLvubDxev

    якобы projectKey является устаревшим и вместо этого нужно использовать, но ни работы скрипта идентификатор.

  5. Я использую oauth2 поэтому я добавил the external lib: 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF

  6. Пояснение: мой файл гс имеет следующий код ниже. Когда вы нажимаете, у меня есть боковая панель с кнопкой вызова onSignIn(). Я ожидаю получить доступ к электронным таблицам с помощью auth. В качестве начальной точки я хочу увидеть страницу авторизации. После принятия его я хочу, чтобы он перенаправлялся на страницу, которая является callback_uri, и демонстрирует что-то простое. Однако это дает мне ошибку. Ироническим этапом была ссылка браузера конечной точки, которую я создал, работал и перенаправлял успешно.

ENDPOINT БРАУЗЕР LINK

https://accounts.google.com/o/oauth2/auth?redirect_uri=https%3A%2F%2Fscript.google.com%2Fmacros%2Fd%2FMCgMJPIdD1bbeG1PsFaNug8uUifae5TWT%2Fusercallback&response_type=code&client_id=131579675294-jc1c0ckuaa7n7ih7eevg19cisthgt00e.apps.googleusercontent.com&approval_prompt=force&scope=https%3A%2F%2Fdocs.google.com%2Ffeeds

Что я делаю неправильно? Ваша помощь приветствуется. Спасибо.

var CLIENT_ID = '131579675294-jc1c0ckuaa7n7ih7eevg19cisthgt00e.apps.googleusercontent.com'; 

    var CLIENT_SECRET = 'XaebFsC18qfMmcZJKgokLEYo'; 

    function onSignIn() { 
     var service = getService(); 
     if (!service.hasAccess()) { 
      var authorizationUrl = service.getAuthorizationUrl(); 
      var template = HtmlService.createTemplate('<a href="<?= authorizationUrl ?>" target="_blank">Authorize</a>'); 
      template.authorizationUrl = authorizationUrl; 
      var page = template.evaluate(); 
      return HtmlService.createHtmlOutput(page); 
     } 
    } 


     function authCallback(request) { 
     var service = getService(); 
     var authorized = service.handleCallback(request); 
     if (authorized) { 
      return HtmlService.createHtmlOutput('Success!'); 
     } else { 
      return HtmlService.createHtmlOutput('Denied'); 
     } 
     } 



     function getService() { 
     return OAuth2.createService('spreadsheets_ozzy123') 

      .setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth') 

      .setTokenUrl('https://accounts.google.com/o/oauth2/token') 

      .setClientId(CLIENT_ID) 

      .setClientSecret(CLIENT_SECRET) 

      .setCallbackFunction('authCallback') 

      .setScope('https://docs.google.com/feeds') ; 
     } 




     function onOpen() { 
      SpreadsheetApp.getUi() // Or DocumentApp or FormApp. 
       .createMenu('Custom Menu') 
       .addItem('Show sidebar', 'showSidebar') 
       .addToUi(); 
     } 


     function showSidebar() { 
     var html = HtmlService.createTemplateFromFile('LoginSideMenu').evaluate(); 
      SpreadsheetApp.getUi().showSidebar(html); 
     } 


     function include(filename) { 
      return HtmlService.createHtmlOutputFromFile(filename).getContent(); 
     } 

ПОЛНЫЙ ОШИБКА

400. That’s an error. 

Error: redirect_uri_mismatch 

The JavaScript origin in the request, https://n-g7vwwdjiqopmv3hpcys4noea4krn6nxax6uaoda-0lu-script.googleusercontent.com, does not match the ones authorized for the OAuth client. Visit https://console.developers.google.com/apis/credentials/oauthclient/131579675294-jc1c0ckuaa7n7ih7eevg19cisthgt00e.apps.googleusercontent.com?project=131579675294 to update the authorized JavaScript origins. 

Learn more 

Request Details 
redirect_uri=storagerelay://https/n-g7vwwdjiqopmv3hpcys4noea4krn6nxax6uaoda-0lu-script.googleusercontent.com?id=auth704130 
response_type=permission id_token 
scope=email profile openid 
openid.realm= 
client_id=131579675294-jc1c0ckuaa7n7ih7eevg19cisthgt00e.apps.googleusercontent.com 
ss_domain=https://n-g7vwwdjiqopmv3hpcys4noea4krn6nxax6uaoda-0lu-script.googleusercontent.com 
fetch_basic_profile=true 
gsiwebsdk=2 
That’s all we know. 
+0

@ShyamKansagra Спасибо, что так много! Я был так уверен, что использовал правильный идентификатор клиента. Получив доступ через Ресурсы -> Расширенные службы, я понял, что это неправильно. Заменили правильные, но все еще не запускали. затем я создал новый лист и перевел весь код на новый. Тогда это сработало !. Я не уверен, как зачислить ваш комментарий. Дай мне знать. – BinaryWo

+0

Добро пожаловать :) Я добавил тот же комментарий, что и ответ. Вы можете принять его. –

ответ

2
  1. Перейти к ресурсам -> Дополнительные услуги. Нажмите кнопку «Консоль разработчиков Google» внизу.

  2. Вы бы открыли менеджер API.

  3. Теперь перейдите к учетным данным в левой панели.

  4. Убедитесь, что вы использовали тот же идентификатор клиента, который указан в вашем коде. Кроме того, существует 2 варианта: Авторизованные источники js и разрешенные URL-адреса перенаправления.
  5. В опции URL-адресов вставьте несоответствующий URL-адрес из вашей ошибки 400.

Нажмите «Сохранить» и повторите попытку.

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