Google Analytics API v3을 사용하고 있습니다. https://developers.google.com/accounts/docs/OAuth2WebServerAnalytics API에서 다음을 반환합니다. 잘못된 요청 - invalid_grant
는 첫째, OAUTH-URL이 사용자에 대해 생성됩니다 : 지금 내 응용 프로그램의 흐름 내가 여기에이 문서를 사용
을 설명 할 것이다. URL은 다음과 같습니다.
https://accounts.google.com/o/oauth2/auth?
client_id={CLIENT-ID}&
redirect_uri={REDIRECT-URL}&
state={CUSTOM-NUMBER}&
response_type=code&
access_type=offline&
approval_prompt=force&
scope=https://www.googleapis.com/auth/analytics
사용자가 링크를 클릭하면 인증됩니다. 그런 다음 코드를 사용하여 액세스 및 새로 고침 토큰을 가져옵니다.
내가 보내는 매개 변수 https://www.googleapis.com/oauth2/v3/token
에
code = Code from Analytics
grant_type = authorization_code
client_secret = CLIENT_SECRET
client_id = CLIENT_ID
redirect_uri = REDIRECT_URI
컬 옵션을 요청을 전송하고있어 다음과 같다 :
CURLOPT_HTTPHEADER = array('Content-Type: application/x-www-form-urlencoded')
그리고 물론
이 포스트 데이터로 구축 http_build_query 그래서 그 content-type 헤더를 사용할 수 있습니다.다음, 나는이 작품이 URL
https://www.googleapis.com/analytics/v3/management/accounts/~all/webproperties/~all/profiles
으로, 사용자의 모든 프로필을 얻고, 나는 모든 프로필을 나열하고있다. 그런 다음 사용자가 프로필 중 하나를 선택하면 내 라이브러리가 사용자의 현재 데이터 (페이지 뷰, 방문 등)를 가져옵니다.
문제는 제가 데이터를 새로 고침 할 때입니다. 매일 cron을 사용하면 오류 메시지가 나타납니다.
'error' => 'invalid_grant',
'error_description' => 'Bad Request'
그러나 나는 모릅니다. 왜 그런가요?
내 데이터베이스의 프로필에 대한 액세스 토큰과 새로 고침 토큰을 저장했습니다. 그런 다음 데이터 액세스 요청을하기 전에 데이터를 다시 액세스 할 때 토큰이 유효한지 확인합니다. 그러나 이것조차도 실패합니다.
나는 액세스 토큰 난 그냥 인증 5 초 후에 토큰이 더 이상 유효하지 않기 때문에, 신비 어떤 (무효라고, 여기
그것은 나에게 말한다을 요청하고 있어요 ?
어쨌든, 그때,
URL: https://www.googleapis.com/oauth2/v3/token
Parameters:
client_secret = CLIENT_SECRET
client_id = CLIENT_ID
refresh_token = REFRESH_TOKEN From my database
grant_type = refresh_token
cURL Options: CURLOPT_HTTPHEADER = array('Content-Type: application/x-www-form-urlencoded')
그런 다음이 요청 위스콘신 내장 PARAMS와 POST 요청을 그것을 다시 시도 일 http_build_query는
응답이
string(67) "{ "error": "invalid_grant", "error_description": "Bad Request" } "
처럼 보인다하지만 난 왜 아무 생각이 없습니다. 액세스 토큰을 사용하고 있으며 5 분 전에 얻은 새로 고침 토큰과 첫 번째 요청에 사용 된 토큰을 새로 고칩니다. 5 분 후에 같은 토큰으로 작동하지 않는 이유는 무엇입니까? 토큰을 새로 고칠 수없는 이유는 무엇입니까?
안녕하세요, 답변 해 주셔서 감사합니다. 1. 현재 날짜는'Mon Jan 26 11:31:12 CET 2015'입니다.이 말은 나에게 딱 맞습니다. 2. 문제는 새 새로 고침 토큰을 생성하지 않는다는 것입니다. 액세스 토큰을 새로 고치려면 액세스 토큰이 작동하지 않습니다. 또한 5 분 전에 발급 된 액세스 토큰을 사용하고 있습니다. 의미, 여전히 작동해야합니까, 그렇지 않아야합니까? 또한 내가 말했듯이, 액세스 토큰이 유효하지 않은 경우 새로 고침 토큰을 사용하여 새 토큰을 생성하려고합니다. 그러나 새로 고침 토큰이 새로 고쳐지지 않습니다. 그냥 액세스 토큰. – Musterknabe
코드에서 변경할 수있는 것이 있습니까? 아니면 이해를 돕기위한 추가 코드를 제공 할 수 있습니까? – Musterknabe
새 액세스 토큰을 요청할 때 새로 고침 토큰을 사용하면 다시 사용자의 액세스를 요청하지 않으면 새로 고침 토큰이 변경되지 않는 새로운 액세스 토큰이 제공됩니다. – DaImTo