Google Contact API - недействительная цель 401

Мой проект использует php с gmail oauth и сталкивается с этой ошибкой как 401 Target Invalid, где другой проект работает нормально, используя тот же способ (другой идентификатор и секрет, но тот же домен). Например:

xxx.com/abc xxx.com/def

HTTP/1.1 401 Token invalid - Target is invalid.
Content-Type: text/html; charset=utf-8
Date: Mon, 19 May 2014 02:03:50 GMT
Expires: Mon, 19 May 2014 02:03:50 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Alternate-Protocol: 443:quic
Transfer-Encoding: chunked

Как я могу решить эту проблему? Ценю любые комментарии и подсказки.

GmailOath коды

 $url = 'https://www.google.com/accounts/OAuthGetRequestToken';
 $params['oauth_version'] = '1.0';
 $params['oauth_nonce'] = mt_rand();
 $params['oauth_timestamp'] = time();
 $params['oauth_consumer_key'] = $oauth->oauth_consumer_key;
 $params['oauth_callback'] = $oauth->callback;
 $params['scope'] = 'https://www.google.com/m8/feeds';

Обновление: я предполагаю, что это может быть проблемой. Ниже по-другому будет Content-type, где должно быть "application/json". Но понятия не имею, где их поменять...

Обновление: после дальнейшего изучения, оно будет работать только после того, как я заменил идентификатор клиента и секрет старого приложения по адресу https://console.developers.google.com/ Не важно, сколько новых приложений я пытаюсь сгенерировать ключи, это просто не работает Что происходит?

Рабочий звонок:-

[url] => https://www.google.com/m8/feeds/contacts/default/full?alt=json&max-results=1000&oauth_consumer_key=59093836836-0c8mb4u395gklok3k52cr2b0oml3gmcg.apps.googleusercontent.com&oauth_nonce=1103659829&oauth_signature=ORgJZEli8Y0b1Bv1xUwFWysdJgA%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1400465100&oauth_token=1%2FL0o-ttvJP0haJ2RF9I-jd6hOIW2-kFYiQmlNx7UWVkw&oauth_version=1.0
            [content_type] => application/json; charset=UTF-8
            [http_code] => 200
            [header_size] => 525
            [request_size] => 743
            [filetime] => -1
            [ssl_verify_result] => 0
            [redirect_count] => 0
            [total_time] => 2.250314
            [namelookup_time] => 4.7E-5
            [connect_time] => 0.012625
            [pretransfer_time] => 0.040877
            [size_upload] => 0
            [size_download] => 997382
            [speed_download] => 443219
            [speed_upload] => 0
            [download_content_length] => -1
            [upload_content_length] => 0
            [starttransfer_time] => 0.423671
            [redirect_time] => 0

Не работает звонок:-

 [url] => https://www.google.com/m8/feeds/contacts/default/full?alt=json&max-results=1000&oauth_consumer_key=59093836836-57psirebb7ntghd1259g4iiml5eq0l70.apps.googleusercontent.com&oauth_nonce=995553446&oauth_signature=8yPK5su1np6sC0z8vmZ%2BHOW7CuE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1400465030&oauth_token=1%2FrDfOd04W2oUs2MHfLoFIJoVngnM0n3MWZwWMRoeFDOg&oauth_version=1.0
                [content_type] => text/html; charset=utf-8
                [http_code] => 401
                [header_size] => 369
                [request_size] => 745
                [filetime] => -1
                [ssl_verify_result] => 0
                [redirect_count] => 0
                [total_time] => 0.337964
                [namelookup_time] => 4.7E-5
                [connect_time] => 0.017053
                [pretransfer_time] => 0.054309
                [size_upload] => 0
                [size_download] => 11875
                [speed_download] => 35136
                [speed_upload] => 0
                [download_content_length] => -1
                [upload_content_length] => 0
                [starttransfer_time] => 0.337551
                [redirect_time] => 0

Пожалуйста, попросите дополнительную информацию, если вышеуказанные вопросы не завершены. Благодарю.

2 ответа

Решение

Обнаружил решение,

Похоже, что недавно сгенерированный Client ID и Client Secret уже вышли из устаревшей версии API. Единственный способ заставить это работать - реализовать Google Contact APIv3 и использовать OAuth2.

Надеюсь, что это поможет остальным, кто имеет такие же проблемы.

401 ошибка - это HTTP-код, который гласит Unauthorized Это означает, что запрос требует аутентификации. Смотрите здесь: 10 кодов определения статуса поиска для 401

10.4.2 401 Unauthorized

The request requires user authentication. The response MUST include a 
WWW-Authenticate header field (section 14.47) containing a challenge applicable 
to the requested resource. The client MAY repeat the request with a 
suitable Authorization header field (section 14.8). If the request already 
included Authorization credentials, then the 401 response indicates 
that authorization has been refused for those credentials. If the 401 response 
contains the same challenge as the prior response, and the user agent has 
already attempted authentication at least once, then the user SHOULD be 
presented the entity that was given in the response, since that entity might 
include relevant diagnostic information. HTTP access authentication is explained 
in "HTTP Authentication: Basic and Digest Access Authentication"

Обновить

Так как ваши запросы отличаются друг от друга, тот, который работает, получил доступ, а второй нет. Я проверил ваши запросы с Winmerge, и они из двух разных приложений. Таким образом, вы можете попытаться отправить через JSON первого, чтобы увидеть, что происходит.

Возможно ли, что вы не настроили другое свойство приложения, чтобы иметь доступ через Google API.

Я все еще придерживаюсь своего предыдущего ответа, потому что это вопрос кода 401, несанкционированного доступа.

Другие вопросы по тегам