4

내 도메인의 Google 스프레드 시트 (Google Apps Free Edition을 사용 중입니다)에서 일부 데이터를 읽어야하는 PHP 웹 페이지를 만들려고합니다.Google 스프레드 시트 API에서 OAuth 2.0으로 요청 인증

읽을 스프레드 시트는 비공개이지만 내 도메인의 일부 사용자에게 표시됩니다. 비공식이므로 API를 사용하여 인증 및 권한 부여 작업을 수행 할 수도 있습니다.

나는이 페이지를 찾았지만 내가 이해하지 못하는 것이 있습니다 : http://code.google.com/intl/zh-TW/apis/spreadsheets/data/3.0/developers_guide.html#Auth

그것은 우리의 OAuth 2.0 프로토콜을 사용한다라고,이 괜찮는. 그러나 승인 과정에서 "Google은 사용자에게 OAuth 대화 상자를 표시하고 애플리케이션에 일부 데이터 요청 권한을 요청합니다."라고 말합니다..

내 웹 페이지는 스프레드 시트에서 읽은 일부 데이터를 표시합니다. 따라서 누군가 내 웹 페이지로 이동하면 스프레드 시트 소유자에게 허가를 요청하는 대화 상자가 표시됩니까? 이것은 이것이 의미하는 것입니까?

모든 조언을 매우 환영합니다.

답변

4

(그는 예를 들어, 쿠키가없는 경우) 구글은 사용자가이 사용자가 정확히 것을 당신 사용자의 자격 증명을 필요로하는 방법이다 달성은 서버와 Google 간의 서버 대 서버 인증입니다.

이렇게하면 방문자가 내 페이지에 들어갈 때 제 3 자의 개입없이 자신의 스프레드 시트에서 데이터를 가져옵니다. (달성하기 훨씬 용이하지만, 일부 설정 백업이있을 수 있습니다)

당신이 Google Service Account에서 무엇을 찾고 있는지 찾을 수 I'ts

하고, 또한 here

, 다른 솔루션을 사용하는 것입니다 oareh 2.0 프로토콜 (Google Console API에서 가져온 Google 개발자 계정)

  1. 당신이 이미하지 않은 경우, 구글 개발자 계정을 생성 (구글 콘솔 API)
  2. 는 "오프라인"부여와 응용 프로그램에 대한 액세스/새로 고침 토큰 생성 - 당신이 당신의 디바이스와 API 요청을 할 수있는 의미를 스프레드 시트 계정으로 로그인하지 않아도 스프레드 시트 계정에 로그인 할 수 있습니다.
  3. 생성 한 새로 고침 토큰을 저장하고이 토큰을 사용하여 계속해서 액세스 토큰을 생성합니다 (지난 1 시간 동안 토큰에 액세스).

새로 고침 토큰은 만료되지 않아야하지만, 필요하면 다시 생성하고 새로 생성 한 토큰을 새로운 것으로 교체 한 다음 계속해서 액세스 토큰을 생성 할 수 있습니다.

새로 고침 토큰이 무효화되는 경우를 대비하여 수동으로 교체해야합니다. 스프레드 시트 계정에 액세스하려면 개발자 계정에 대한 액세스 권한을 다시 부여해야합니다.

조금 도움이 되었기를 바랍니다.

Meny

2

예, OAuth 프로토콜을 사용하면 상대방 (Google)으로부터 보호 된 리소스를 요청할 때 사이트가 사용자의 다른 사이트로 리디렉션되어 Google의 로그인/비밀번호 대화 상자에 확인 요청을 표시해야합니다. 사용자는 귀하의 사이트가 다른 사이트 (귀하의 경우에는 Google)에서 사용자의 자원을 사용할 수 있도록 동의합니다. OAuth를가

을 작동하고 구글이 확실하지 않기 때문에 당신이 실제로 무슨 말을 하려는지

+0

나는 약간 혼란 스럽다. 내 웹 페이지를 방문하는 사람들은 손님 일 뿐이며 내 Google 애플리케이션 도메인에는 Google 계정이 없습니다. 필요한 데이터가 내 Google 애플리케이션 도메인의 비공개 Google 스프레드 시트 문서에 있음에도 불구하고 내 웹 페이지를 공개적으로 볼 수 있어야합니다. – bobo

+0

OAuth는 다른 사람의 도메인에서 데이터를 읽는 용도로만 사용할 수 있습니까? 내가 통제 할 수있는 자체 도메인에서 데이터를 읽고 있습니다. OAuth는 여전히 내 상황에서 유용합니까? – bobo

+0

확실하지는 않습니다. 어쩌면 귀사에서는 거대한 oauth 사용자 지정이 필요할 것입니다. 사용자가 모든 요청을 투명하게 처리하여 리디렉션하고 데이터를 표시 할 수 있습니다. 그러나 실제로는 귀하의 사이트에 귀하의 사용자를 설명하는 Google (페이스 북 등)의 데이터를 표시하는 데 도움이되는 프로토콜입니다. 당신은 아마도 다른 솔루션을 선택해야 할 것입니다. – javagirl

4

구글 &의 OAuth 튜토리얼 : 일이를 찾기위한 내가 검색. 다른 OAuth 스타일 튜토리얼 을 사용하는 것이 훨씬 낫습니다. Google 문서 도구/Google 드라이브에 연결하기위한 것입니다. 당신이 그것에 새로 고침 토큰을 추가 할 필요가 https://developers.google.com/drive/examples/python

참고 :

파이썬 예제는 자바 등 다른 예를 참조하십시오 여기에있다. 그러나 그것은 당신이 예상했던대로 작동합니다. 또한

스프레드 시트 사용에 연결 :

  SpreadsheetService service = 
        new SpreadsheetService("MySpreadsheetIntegration-v1"); 

      service.setHeader("Authorization", "Bearer " + accessToken); 
2

당신이 사용하는 새로운 제공으로 OAuth2는

//flow use httpTransport, clientSecrets, json factory and datastore factory 
val flow = new GoogleAuthorizationCodeFlow 
    .Builder(httpTransport,JSON_FACTORY,clientSecrets,SCOPES) 
    .setDataStoreFactory(datastoreFactory) 
    .build() 

// authorize 
val credential=new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user") 

흐름과 GDATA 서비스를 사용할 수 있습니다 : 전체

val service:SpreadsheetService=new SpreadsheetService("SpreadsheetIntegration") 
service.setOAuth2Credentials(credential) 

스칼라 예 : https://github.com/spaced/spreadsheet-oauth2-example