2013-10-02 2 views
0

나는 Google 드라이브에 대한 인증을 구현하기 위해 노력하고있어 사용자가 인증하기 위해 Google 로그인 페이지로 리디렉션 될 때구글 OAuth2를하고 AppEngine에

https://google-developers.appspot.com/drive/auth/web-server

첫째, 그것은 분명 아니다. 그들은 그 부분을 보여주는 것처럼 보이지 않습니다.

둘째, 콜백 코드가 표시되지 않습니다. 나는 그것을 이해할 수 있다고 생각하고 새로운 서블릿이나 서비스 또는 EntryPoint를 추가해야하지만 GWT에서는 까다로울 수 있습니다.

클래스가 존재하더라도 클래스 NotFoundException이 계속 발생하며 잘 컴파일됩니다.

Caused by: java.lang.NoClassDefFoundError: com/google/api/client/http/HttpRequestInitializer 
    at com.onix.sdm.server.SDMServiceImpl.loginServer(SDMServiceImpl.java:37) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:115) 
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561) 
    ... 40 more 
Caused by: java.lang.ClassNotFoundException: com.google.api.client.http.HttpRequestInitializer 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:215) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 47 more 
그것은이 라인에 죽어

:

37  DriveAuthentication da = new DriveAuthentication(); // Same as MyClass 

어떻게 당신이 GWT에 구글에서 OAuth2를 추가하는 방법은 무엇입니까?

답변

2

GWT는 클라이언트 기술이지만 게시 한 링크는 서버 인증 용입니다. 따라서 첫 번째 단계는 사용할 방법을 결정하는 것입니다.

서버 인증을 원할 경우 게시 한 링크가 정확하며 GWT는 이에 대해 알지 못합니다. GWT 앱이 RPC/REST 등을 사용하여 서버를 호출하고 서버가 드라이브 액세스를 수행합니다.

반면에 클라이언트 인증을하려면이 링크 https://developers.google.com/accounts/docs/OAuth2UserAgent에 게시해야하는 URL이 설명되어 있어야합니다. 도서관에서 멀리 떨어져 원시 URL을 직접 읽고 이해하는 것이 좋습니다.

+0

클라이언트 또는 서버가 정상입니다. 클라이언트라면 서버에 새로 고침 및 액세스 토큰을 제출합니다. .client 패키지에서는 컴파일되지 않습니다. InputStream 클래스를 찾을 수 없습니다 (또는 비슷한). 이것은 .server 패키지에 있으며 실행되지 않습니다! GWT보다 AppEngine의 문제가 더 많습니다. 원시 URL을 사용하는 것이 좋습니다. 그 전에 Perl에서는 Oauth2를 구현했지만 매우 까다 롭습니다. SDK를 제공 할 때 바퀴를 다시 만드는 이유는 무엇입니까? 문제는 모든 SDK 라이브러리의 추상화가 변경된다는 것입니다. – Chloe

+0

나는 당신이 클라이언트 대 서버 인증을 확실히 파악하지 못했다고 겸허하게 제안 할 수 있습니다. 클라이언트 인증에는 새로 고침 토큰이 없습니다. 결국 너 자신의 질문에 좀 대답했다. imho oauth SDK는 매우 새는 추상화입니다. 나는 여러 번 좌절 한 후에 그것을 버렸다. DIY하려면 3 개의 URL 만 있습니다. (1) 인증 코드를 사용하여 콜백 서블릿으로 리다이렉트하는 인증/식별을위한 리다이렉트 URL; (2) 액세스 코드를 새로 고침 토큰 (저장하는)으로 변환하는 POST URL. (3) 새로 고침을 사용하여 액세스 요청을 요청하는 POST URL. 알아야 할 모든 것이 1 페이지에 있습니다. http://goo.gl/1CoFpk – pinoyyid

+0

오해. * .client와 * .server는 각각 GWT가 클라이언트와 서버 코드를 배치하는 패키지입니다. OAuth 코드의 위치는 나와 잘 맞습니다. – Chloe