В настоящее время (по состоянию на март 2011 г.) недокументированные требования относительно того, что делает действительным redirect_uri.
Во-первых, оба параметра redirect_uri для авторизации и access_token должны совпадать .
Очевидно, Facebook (или, скорее, OAuth2) использует redirect_uri в качестве внутреннего ключа для кодирования возвращаемого кодадля запроса access_token.Это довольно умно, так как он проверяет обратно на ваш сайт.Это объясняет, почему для запроса access_token, который иначе не нуждался бы в параметре redirect_uri, требуется один.
Во-вторых, вы не можете использовать много специальных символов в redirect_uri .
Многообсуждения бушует, могут ли параметры быть переданы вообще.Они могут, вы ограничены, какие символы действительны, но никто не опубликовал список, который я знаю.Традиционные методы, такие как кодировка url / html, не будут работать, поскольку процент (%) недопустим.Косая черта (/) также недопустима, поэтому вложенный URL перенаправления всегда будет неудачным.ЕДИНСТВЕННЫЙ способ преодолеть специальное ограничение char - это закодировать значение параметра в base64.Если вы используете ASP.NET, найдите Convert.ToBase64.
Наконец, и это скорее второстепенная заметка.Многие программисты передают дезинформацию о том, что простым решением является передача type = client_cred.Это может ограничить ваш доступ к некоторым разрешениям, которые вы запрашивали в своем разрешении.Это нежелательно.