2013-09-27 3 views
0

Я работаю над проектом, чтобы получить профиль профиля Google+ с помощью oAuth. Я пробовал несколько разных методов, и я продолжаю получать 403 Forbidden Error Message при попытке получить данные профиля.Профиль Google+ 403 после доступа к токену

Вот код, я использую, чтобы получить маркер доступа

 GoogleClient googleClient = new GoogleClient 
    { 
     ClientIdentifier = ConfigurationManager.AppSettings["googleConsumerKey"], 
     ClientCredentialApplicator = ClientCredentialApplicator.PostParameter(ConfigurationManager.AppSettings["googleConsumerSecret"]), 
    }; 

    googleClient.RequestUserAuthorization(scope: new[] { "https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email", 
    "https://www.googleapis.com/auth/plus.me" }); 

    IAuthorizationState authorization = googleClient.ProcessUserAuthorization(); 

    if (authorization != null && authorization.AccessToken != null) 
    { 
     WebRequest testREQ = WebRequest.Create("https://www.googleapis.com/plus/v1/people/me?key=" + ConfigurationManager.AppSettings["APIKey"] + "&access_token=" + Uri.EscapeDataString(authorization.AccessToken)); 
     WebResponse testRES = testREQ.GetResponse(); 
    } 

выше код генерирует 403, когда GetResponse() называется

Я также попробовал библиотеку, используемую здесь

http://www.googleplustips.com/resources/3332-NET-Library-Google-APIs-released.aspx

используя этот код

string profileId = "me"; 
    string apiKey = ConfigurationManager.AppSettings["APIKey"]; 
    // You can get an API Key here: https://code.google.com/apis/console#access 

    GooglePlusAPIHelper apiHelper = new GooglePlusAPIHelper(profileId, apiKey); 

    GPlusActivities activities = apiHelper.ListActivities("eJx9Uj1IAzEUfglXeuASxbWQRX"); 

    GPlusActivity activity = apiHelper.GetActivity("z13rvzzy2lmtj3p0a22md1c4nyrdufrxv04"); 

    GPlusActivities activities2 = apiHelper.SearchActivities("Windows 8"); 

    GPlusPerson person = apiHelper.GetPerson(); 

    GPlusPeople people = apiHelper.SearchPeople("windows 8 club"); 

    GPlusComments people2 = apiHelper.ListComments("z120yhh54qrbsn5tr22rtjbiqr3mh1qp504"); 

    GPlusComment comment = apiHelper.GetComment("2HOqDyvQVCrbz47vK_w9nSrRYnS"); 

Это также бросает 403 Forbidden на ListActivities() называют

Я предполагаю, что это связано с какой-то установки, что я не сделал с моей стороны, но я не знаю, где это может быть. У меня есть все службы Google+, выбранные в моей консоли API.

Любая помощь была бы принята с благодарностью.

ответ

1

Я бы удостоверился, что APIKey, который вы используете, является допустимым ключом API для вашего проекта, а IP-адрес, к которому обращается ваш запрос, - это тот, который указан как допустимый адрес сервера для вашего ключа.

Убедитесь, что вы установили ключ API из API консоли в разделе «Доступ к API» Simple API Access

При создании ключа сервера, вам необходимо предоставить IP-адрес (а) сервера и Google будет проверять ключ происходит от авторизованного хоста:

Configure Server Key for simple-test

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

Если ошибка изменилась на ошибку 401 после того, как вы переключились на использование API API-сервера (что, как вам кажется, предлагается из ваших комментариев ниже), возможно, вы не используете текущий токен-аутентификатор от клиента. Токены истекают через 60 минут, поэтому вам нужно убедиться, что вы используете текущий.

+0

Я не использую ключ сервера, а ключ браузера (это веб-приложение, которое получает информацию). Рефери для моего браузера - полный URL-адрес моей страницы. Я установил серверное приложение с моими машинами IP и получил 401 Unauthorized, что имеет смысл с момента его веб-вызова. Сообщите мне, если вам нужно больше информации –

+0

Если это webapp, который выполняется на сервере (в отличие от javascript, который выполняется на клиенте, чего это не похоже), вам нужно использовать Server APIKey. Вопрос не в том, где отображается содержимое, но где сама программа запускается, а C# обычно работает на сервере. Использование неправильного типа ключа, вероятно, будет соответствовать ошибке 403. Я редактирую свои вопросы, чтобы разобраться с 401 Несанкционированным вопросом. – Prisoner

Смежные вопросы