저는 Delphi에서 데스크톱 응용 프로그램을 작성하고 Google 캘린더와 동기화하려고합니다 (Windows 만 사용하면 7 이상이됩니다). 내 시스템 레지스트리에 사용자 지정 URI 스키마를 등록 했으므로 eu.myapp:test
은 내 프로그램을 실행하거나 이미 실행중인 프로그램 인스턴스에 메시지를 전달합니다.사용자 지정 URI 스키마가있는 데스크톱 응용 프로그램, 토큰 요청시 "누락 된 스키마"
인증의 첫 걸음을 내딛었습니다. 기본 브라우저를 열어 사용자에게 캘린더 수정 권한을 요청하면 인증 코드가 내 소프트웨어로 다시 걸리게됩니다.
{
"error": "invalid_request",
"error_description": "Invalid parameter value for redirect_uri: Missing scheme: eu.myapp",
"error_uri": ""
}
내 요청 본문 : 다음과 같은 응답 본체와 함께 - OAuth 클라이언트 내가 실제 토큰을 요청하려고 할 때
그러나, 요청이 (잘못된 요청 400)를 거부, 아이폰 OS 응용 프로그램으로 등록되어 있습니다 다음과 같습니다
POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded
code=XXX&
client_id=YYY&
redirect_uri=eu.myapp&
grant_type=authorization_code
documentation에 따르면, 나는 URI는 API 콘솔에서 얻은 리디렉션을 포함하는데,하지만 난 거기에 그러한 URI를 발견하고있다. 더 오래된 답변을 찾았지만, 개발자 콘솔은 주어 졌으므로 외관상 변경되었습니다. 더 이상 관련이 없습니다. 내가 뭘 놓치고 있니?
편집 : 나는 간단한 nodejs 서버를 구축하고 SSL 인증서와 nginx를 함께 넣어 좀 더 많은 정보 를 추가, 그래서 난 사실에서 보내지는 것을 볼 수 있었다. 그런 다음 내 응용 프로그램과 예제 C# 응용 프로그램을 모두 사용하여 토큰 요청을 보내고 요청 본문을 모니터링했습니다. 유일한 차이점은 delphi url이 자동으로 코드를 인코딩한다는 것입니다 (4 % 2Fhky ... 대신 4/Fhky ...). 그것 이외에 그들은 동일하게 보였다.
또한 localhost 포트를 수신 대기하도록 응용 프로그램을 다시 작성했지만 동일한 결과가 발생했습니다. 델파이 데모에서는 사용자가 로그인 할 수있는 임베디드 브라우저 (및 작동)를 사용하여 Google API를 사용하는 방법을 보여 주지만 API 문서에 따르면 사용되지 않으며 곧 삭제 될 예정입니다. 게다가 첫 번째 리디렉션을 잘 관리 할 수있는 것처럼 보이지만 실제로 토큰을 가져 오는 것은 실패합니다.
데스크톱 응용 프로그램의 경우 기본 자격 증명 또는 기타 만 사용해야합니다. iOS가 아닙니다. 그러면 리다이렉트 URI로 urn : ietf : wg : oauth : 2.0 : oob을 보낼 수 있습니다. 기본적으로 localhost를 의미합니다. – DaImTo
데스크톱 애플 리케이션을위한 Google의 권장 접근 방식 인 루프백 IP 또는 맞춤 URI 스키마이며 실제로 데스크톱에서 스키마 접근 방식을 사용할 때 클라이언트 유형으로 iOS를 선택해야한다고 말합니다. 데모] (https://github.com/googlesamples/oauth-apps-for-windows/tree/master/OAuthUniversalApp) – Oxudes
https://developers.google을 따라 가면서 C# 샘플을 현재 사용하려고합니다. .com/youtube/analytics/registration_an_application 설치된 응용 프로그램은 데스크톱 컴퓨터 또는 휴대용 장치에서 실행됩니다. Android, Chrome, iOS 및 기타 설치된 애플리케이션에 대한 OAuth 2.0 자격증 명을 만들 수 있습니다. 개인적으로 나는 다른 유형을 선호합니다. 데모의 저자에게 도움을 청할 수 있는지 문의하십시오. 나는 전에 그렇게 많은 도움이되지 않을 것임을 보지 못했습니다.C# 용 Google .Net 클라이언트 라이브러리를 사용하는 것으로 보이지 않습니다. 그래서 내 견본은 많은 도움이되지 않을 것입니다. 행운을 빌어 요 – DaImTo