2016-06-23 3 views
1

저는 3 일 동안 여러 가지 방법을 시도하고 gmail API 문서 및 stackoverflow를 통해 사냥을 해왔습니다.하지만 가능할 지 아직 확실하지 않습니다.UI가없는 gmail-api PHP

Gmail API를 사용하여 cron 스타일 프로세스로 이메일을 보내려고합니다. (말 그대로 cron이 아니지만 유사 함). 따라서 사용자 상호 작용은 없습니다.

https://console.developers.google.com/apis/credentials 페이지에서 자격 증명을 설정했지만 사용하려고하면 오류가 발생합니다. 또한 https://developers.google.com/gmail/api/quickstart/php#step_2_install_the_google_client_library에서 quickstart.php를 실행했지만 3600 초가 지나면 자격 증명이 만료되는 것으로 보입니다. 나는 또한 다른 신임장 파일과 비슷한 키가 없으므로이를 사용하는 방법조차 모릅니다.

그리고 나서 자격 증명 페이지를 보았습니다. Gmail API에 대한 새로운 자격 증명을 만들려고하면 cron-job에 대해 알려주지 않습니다. 간단히 말하면 "로그인을 위해 사용자 상호 작용이 필요하기 때문에 UI가없는 플랫폼에서 사용자 데이터에 액세스 할 수 없습니다."

제 질문은 웹 페이지를 읽고 긁을 컬을 구현하는 자체 클래스를 만들지 않고 cron 작업을 실행하여 Gmail API를 사용하여 전자 메일을 보내려는 것입니까?

편집 : 모든 사람들의 도움에 감사 드리며 실제로 누군가 실제로 도움을 주 었는지보고 싶습니다. 지금까지 아무도 그것을 인정하지 않습니다. 서비스 수준 자격 증명을 살펴 보았습니다. 사용자 수준의 자격 증명을 살펴 봤습니다. 나는 퀵 스타트를 시도했다. 빠른 시작은 작동하지만 결과를 즉시 사용하여 전자 메일을 보내더라도 로그인 실패로 실패합니다.

키 새로 고침에 대한 설명서도 읽었습니다.

Google에서 API를 너무 많이 사용하여 사용자 상호 작용없이 작업을 잊어 버린 것 같습니다. 이봐, 알았다. 모든 것을 쓰려고 노력하는 것은 복잡합니다. 나는 불평 하는게 아니야. 나는 심각하게도 누군가가 실제로 gmail을 사용할 수 있는지에 대해서만 묻고있다.

+1

Gmail의 SMTP를 사용할 수 있습니다. –

+0

당신은 gmail-api를 의미합니까? 아니면 다른 것입니까? – jim

답변

1

Gmail API를 구체적으로 모르지만 oAuth를 사용하여 자격증 명을 얻는 경우 프로그래밍 방식으로 자격 증명을 갱신 (기본적으로 새 세트 얻기) 할 수있는 새로 고침 토큰이 있습니다. 그것에 대한 자세한 내용은 here을 참조하십시오.

편집 : 처음으로 토큰 정보를 얻을 때 UI가 필요합니다. 이것은 설정의 버튼 또는 반환 된 정보를 데이터베이스와 같은 영구적 인 장소에 저장하는 버튼으로 수행 할 수 있습니다. 그런 다음 'cron'형식의 호출에 대해 액세스 토큰을 참조하거나 만료 된 경우 새로 고침 토큰을 사용하여 새 액세스 토큰을 얻습니다.

+0

감사합니다. 그것은 그것을 할 수 있다고 제안하지만, 그렇게 명시 적으로 말하지 않는 것 같습니다. 또한 로그인 할 때 사용자 상호 작용이 필요하기 때문에 UI가없는 플랫폼에서 사용자 데이터에 액세스 할 수 없다는 자격 증명 페이지 작성에 대한 정보와 충돌합니다. Gmail API로이 작업을 수행 한 사람이 전화를 걸기를 정말로 희망합니다. – jim

+0

나는 그걸 시도해 왔지만 여전히 오류가 기록되지 않습니다. 시작부터 샘플을 찾거나 실제로 성공한 사람이 그것이 가능하다는 것을 확인할 수 있다면 훨씬 간단해질 것입니다. 나는 그것이 안드로이드 인증 시스템에서 복사되었고 cron 작업에 사용될 수 있도록 설계되지 않았 음을 심각하게 의심합니다. – jim

+0

@jim [서버 측 인증 구현] (https://developers.google.com/gmail/api/auth/web-server#exchange_the_authorization_code_for_an_access_token)을 확인 했습니까? –

1

사용자가 처음 로그인 할 때 오프라인 액세스를 요청하고 액세스 토큰이 만료되면 새로 고침 할 수 있습니다. 사용자에게 처음으로 로그인하도록 요청해야합니다.

먼저 로그인 URL을 생성하기 전에 액세스 유형을 '오프라인'으로 설정해야합니다. 이렇게하려면 $this->client->createAuthUrl()을 호출하기 전에 다음 코드 줄을 추가하십시오.

$this->client->setAccessType($accessType); 

처음으로 인증 할 때 오프라인 액세스를 요청하는 메시지가 표시됩니다. 그런 다음 콜백 함수에서, 당신은 수신 된 코드를 기반으로 사용자를 인증하고 새로 고침 토큰을 얻어야한다 :

$this->client->authenticate($code); 
$tokens = $this->client->getAccessToken(); 
$refresh_token = $tokens->refresh_token; 

저장 데이터베이스에서 refresh_token도를 그리고 당신은 토큰이 만료 할 때마다 새로운 접근을 만들 수있을 것입니다 .이 답변은 구글의 PHP SDK를 기반으로 클라이언트는 클라이언트 객체입니다

$this->client->refreshToken($refreshToken); 

을 다음과 같은 코드를 그렇게. 유용하고 쉽게 구현할 수있는 API 용 래퍼를 만들었습니다. here에서 확인할 수 있습니다. 대부분의 기능이 포함되어 있습니다.

+0

예제를 통해 설명 하겠지만 UI와 양식이 더 많습니다. 내가 묻는 것을 실제로하는 것처럼 보이지 않는다. 내가 알고 싶은 것은 Gmail API (oAuth 2.0)를 사용하여 cron 작업에서 메일을 보낼 수 있는지 여부입니다. 그렇다면, 누군가가 그것을하는 방법에 대한 간단하고 솔직한 예를 가지고 있다면 그것은 좋을 것입니다. 지금은 내가 만든 서비스 수준의 자격 증명을 사용하고 있습니다. 새 Google_Client()를 만들고, 응용 프로그램 이름을 만들고, 클라이언트 비밀 번호와 범위를 설정하고, 클라이언트에서 서비스를 가져 와서 전자 메일을 보내려고합니다. 항상 로그인 실패. – jim

관련 문제