Ключ авторизации C2DM CRLF и .Net WebRequest - PullRequest
2 голосов
/ 26 сентября 2011

Мы используем C2DM и пишем серверное приложение на C #.

Мы получаем ключ авторизации с помощью POST, используя компонент WebRequest.Это работает, и мы возвращаем закодированный ключ авторизации.Проблема возникает, когда мы добавляем этот ключ в заголовок auth запроса, который будет отправлять сообщение.

WebRequest request = WebRequest.Create("url");
...
request.Headers.Add(HttpRequestHeader.Authorization, "GoogleLogin auth=" + AuthorizationKey);

Поскольку ключ имеет символ LF, мы получаем исключение ...

Unhandled Exception: System.ArgumentException: Specified value has invalid CRLF characters.
Parameter name: value

   at System.Net.WebHeaderCollection.CheckBadChars(String name, Boolean isHeaderValue)

   at System.Net.WebHeaderCollection.Add(String name, String value)

Казалось бы, CheckBadChars () отказывается от ключа авторизации, потому что думает, что в ключе есть CRLF, хотя на самом деле существует только LF.

У кого-нибудь есть идеи, как мы могли бы обойти эту проблему?

1 Ответ

0 голосов
/ 26 сентября 2011

Может быть, вы только что получили разрыв строки в конце, который должны удалить?

Редактировать: Я прочитал документацию (на http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html#Response) иговорит, что вы должны получить ответ, который выглядит следующим образом:

SID=DQAAAGgA...7Zg8CTN
LSID=DQAAAGsA...lk8BBbG
Auth=DQAAAGgA...dk3fA5N

Есть три перевода строки, поэтому вам нужно выбрать строку, начинающуюся с Auth=, и получить разрешениетокен оттуда.

...