2017-01-03 5 views
1

문서를 검색하고 읽지 않고이 질문을하지 않습니다. 나는 2 일을 지금까지 보내었다. 나는 sth가 없다고 확신한다. 드라이브 스프레드 시트에 Google 인증을 구현하려고합니다. 모든 것을 시도했지만 여전히 오류 메시지 (redirect_uri_mismatch)가 표시됩니다. 기본적으로 로그인 화면이있는 사이드 패널이 필요합니다. 사용자가 버튼을 클릭하면 auth magic이 실행되고 사용자가 액세스를 허용 할 때 다른 html로 인쇄되는 "Success"로 리디렉션됩니다.Google 스크립트 oauth2 오류 : redirect_uri_mismatch

  1. Google 개발자 콘솔에서 프로젝트를 만들었습니다.
  2. 만든 자격 증명
    2.1 클라이언트 ID : 비밀
    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 사용되지 않으며 대신 스크립트 ID가 있지만 어느 작품을 사용해야합니다. 내가 OAuth2를 사용

  5. 은 그래서 the external lib 추가 : 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF

  6. 설명 : 내 GS 파일은 아래에 다음과 같은 코드가 있습니다. 단추가있는 사이드 바를 클릭하면 onSignIn()이 호출됩니다. 승인 된 스프레드 시트에 액세스하려고합니다. 시작 지점으로 권한 부여 페이지를보고 싶습니다. 그것을 받아 들인 후, 나는 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 너무 감사합니다. 나는 내가 올바른 클라이언트 ID를 사용하고 있음을 확신했다. 리소스 -> 고급 서비스를 통해 액세스 한 후, 나는 그것이 옳지 않다는 것을 깨달았습니다. 올바른 것을 대체했지만 여전히 실행되지 않았습니다. 그런 다음 새 시트를 만들고 모든 코드를 새 시트로 옮겼습니다. 그 때 그것은 일했다!. 나는 당신의 코멘트를 어떻게 공제 할 지 잘 모릅니다. 알려줘. – BinaryWo

+0

당신은 환영합니다 :), 나는 대답과 같은 주석을 추가했습니다. 너는 그것을 받아 들일 수있다. –

답변

2
  1. 이동 자원으로 -> 고급 서비스를 제공합니다. 하단의 Google 개발자 콘솔을 클릭하십시오.

  2. API 관리자를 열었을 것입니다.

  3. 이제 가장 왼쪽 패널의 자격 증명으로 이동하십시오.

  4. 코드에 표시된 것과 동일한 클라이언트 ID를 사용했는지 확인하십시오. 또한 두 가지 옵션이 있습니다. 허가 된 js 출처 및 승인 된 리디렉션 URL.
  5. url 옵션에서 400 오류의 불일치 URL을 붙여 넣습니다.

저장을 클릭하고 다시 시도하십시오.

관련 문제