문서를 검색하고 읽지 않고이 질문을하지 않습니다. 나는 2 일을 지금까지 보내었다. 나는 sth가 없다고 확신한다. 드라이브 스프레드 시트에 Google 인증을 구현하려고합니다. 모든 것을 시도했지만 여전히 오류 메시지 (redirect_uri_mismatch)가 표시됩니다. 기본적으로 로그인 화면이있는 사이드 패널이 필요합니다. 사용자가 버튼을 클릭하면 auth magic이 실행되고 사용자가 액세스를 허용 할 때 다른 html로 인쇄되는 "Success"로 리디렉션됩니다.Google 스크립트 oauth2 오류 : redirect_uri_mismatch
- Google 개발자 콘솔에서 프로젝트를 만들었습니다.
만든 자격 증명
2.1 클라이언트 ID : 비밀
131579675294-jc1c0ckuaa7n7ih7eevg19cisthgt00e.apps.googleusercontent.com2.2 클라이언트 : XaebFsC18qfMmcZJKgokLEYo
설정 콜백 URI :
https : //로 script.google .com/macros/d/MCgMJPIdD1bbeG1PsFaNug8uUifae5TWT/usercallback프로젝트 키 : MCgMJPIdD1bbeG1PsFaNug8uUifae5TWT
스크립트 ID : 1DYEShH45-AtikbEwfAG8w9P7Y39FHhCB-nGHWHOW4mUtq5DZLvubDxev
가정 projectKey 사용되지 않으며 대신 스크립트 ID가 있지만 어느 작품을 사용해야합니다. 내가 OAuth2를 사용
은 그래서 the external lib 추가 : 1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
설명 : 내 GS 파일은 아래에 다음과 같은 코드가 있습니다. 단추가있는 사이드 바를 클릭하면 onSignIn()이 호출됩니다. 승인 된 스프레드 시트에 액세스하려고합니다. 시작 지점으로 권한 부여 페이지를보고 싶습니다. 그것을 받아 들인 후, 나는 callback_uri 인 페이지로 리다이렉트하고 간단한 것을 보여주고 싶다. 그러나 그것은 나에게 오류를 준다. 아이러니컬 한 단계는 제가 만든 엔드 포인트 브라우저 링크였습니다. 성공적으로 리디렉션되었습니다.
? 귀하의 도움을 주시면 감사하겠습니다. 고마워.
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.
@ShyamKansagra 너무 감사합니다. 나는 내가 올바른 클라이언트 ID를 사용하고 있음을 확신했다. 리소스 -> 고급 서비스를 통해 액세스 한 후, 나는 그것이 옳지 않다는 것을 깨달았습니다. 올바른 것을 대체했지만 여전히 실행되지 않았습니다. 그런 다음 새 시트를 만들고 모든 코드를 새 시트로 옮겼습니다. 그 때 그것은 일했다!. 나는 당신의 코멘트를 어떻게 공제 할 지 잘 모릅니다. 알려줘. – BinaryWo
당신은 환영합니다 :), 나는 대답과 같은 주석을 추가했습니다. 너는 그것을 받아 들일 수있다. –