2015-02-04 1 views
0

내 Google 사이트 사이트에서 변경 될 때마다 이벤트가 발생해야합니다.변경을 위해 Google 사이트 폴링

모든 최신 변경 사항이있는 XML 피드가 있습니다. 나는이 피드를 Zapier로 폴링 할 계획을 가지고 있으며 Zapier가 뭔가 변경되면 Zapier가 제공하는 URL에 http 요청을 만들어 내 이벤트를 받게 될 것입니다.

이 사이트는 공개이지만 내 경우에는 정상적으로 작동합니다.

Google에서 제공하는 피드 용 프록시를 작성하는 것이 좋습니다. 프록시는 적절한 인증을 사용하여 피드를 호출하고 내용을 전달합니다. Zapier는 Zapier 친숙한 인증 메커니즘을 사용하여 프록시를 호출합니다.

서비스 계정으로 google 피드를 호출해야한다고 생각했습니다. 그렇다면 node.js로 어떻게 할 수 있습니까?

여기 찾고있다 : https://developers.google.com/google-apps/sites/docs/1.0/developers_guide_protocol#ActivityFeed

답변

0

그것을 알아 냈어!

https를 통해 액세스되는 기본 인증을 사용하여 프록시를 만들었습니다. 이 프록시는 내가 관심있는 Google 사이트의 활동 피드를 통과합니다.

googleapis 모듈을 사용하여 node.js에 프록시를 만들었습니다. 이 예에서

var jwtClient = new googleapis.auth.JWT(
    client_id_email, 
    __dirname + 'key.pem', 
    null, ['https://sites.google.com/feeds/'], 
    '[email protected]' 
); 

jwtClient.authorize(function(err, token) { 
    if (err) return next(err); 

    return rest({ 
     path: 'https://sites.google.com/feeds/activity/{domainName}/{siteName}', 
     headers: { 
      "GData-Version": "1.4", 
      Authorization: token.token_type + ' ' + token.access_token 
     }, 
     params: { 
      domainName: 'domain.org', 
      siteName: 'site', 
     }, 
    }).done(function(result) { 
     res.set(result.headers); 
     res.send(result.entity); 
    }, next); 
}); 

사용자 이름 ([email protected])는 사용자 서비스 계정 가장하는 것입니다 : 여기 내가 사용하는 코드의 조각이다. 이 사용자는 사이트에 대한 액세스 권한이 있어야합니다.

이 예에서는 서비스 계정 키를 'key.pem'파일 이름에 넣었습니다.

이제 액세스하려는 도메인의 서비스 계정에 대한 액세스를 허용해야합니다. 도메인 (admin.google.com)의 관리 사이트에서이 작업을 수행하십시오. 고급 설정에 보안

  • 이동을

    1. 이동
    2. 이동 API 클라이언트 액세스 이제 서비스 클라이언트

    의 CLIENT_ID을 추가 할 필요가

  • ... 그것을 작품 :-) !!! \ o/