Вопрос по api, facebook-graph-api, facebook, oauth – Вопрос перенаправления URL Facebook OAuthException

18

Мое приложение долгое время работало хорошо, но теперь я получаю сообщение об ошибке от Facebook:

Content: {"error":{"message":"Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request","type":"OAuthException","code":100}}

https://www.facebook.com/dialog/oauth/?client_id=163840537126360&redirect_uri=http://mycloud.niranjan.com/facebook/callback//empty/?vTitle=Facebook&scope=email,sms,user_about_me,friends_about_me,user_activities,friends_activities,user_birthday,friends_birthday,user_education_history,friends_education_history,user_events,friends_events,user_likes,friends_likes,user_location,friends_location,user_photos,friends_photos,user_videos,friends_videos,user_relationships,friends_relationships,user_status,friends_status,user_checkins,friends_checkins,read_stream,publish_stream

Кто-нибудь может предложить решение для этого?

Можете ли вы указать здесь ваше текущее использование?redirect_uri? Lian
Я сталкиваюсь с той же проблемой. Моему приложению не удается сгенерировать токен доступа после авторизации, и в результате появляется сообщение «Ошибка проверки кода подтверждения. Убедитесь, что ваш redirect_uri идентичен тому, который вы использовали в запросе диалога OAuth». Я использовал urllib.urlencode (args) для создать URL запроса Avi Mehenwal
Пожалуйста, убедитесь, что значение redirect_url, установленное вами в приложении Facebook, должно совпадать с тем, что вы отправляетеredirect_uri Umesh Awasthi
Я встречал одну и ту же проблему несколько раз, не меняя никакого кода, и я исправил ее, изменив другое значение redirect_uri, возможно, это из-за того, что сервер Facebook изменил некоторые методы. Samuel

Ваш Ответ

8   ответов
1

Мой сайт работает по протоколу https, и я всегда получаю сообщение об ошибке «Ошибка при проверке кода подтверждения. Пожалуйста, убедитесь, что ваш redirect_uri идентичен».

Но затем я изменил https на http в redirect_uri и на панели разработчика (OAuth urls), затем ошибка исчезла, и аутентификация начала работать правильно. Но сайт все еще работает https ...

Надеюсь, это кому-нибудь поможет.

Это то же решение, которое уже дали как минимум два других ответа. solarissmoke
Это выглядит как противоположное решение для двух ответов. Но это работает. Gregory Rusakov
1

у меня был код base64, который содержит/ а также=Я попробовал некоторые символы, такие как! @ = / ; все бросают одну и ту же ошибку

допустимо только два символа- _ # $

P.S / в конце запроса не помогло. также это было запрещено в середине строки запроса

1

https:// Однако в вашем URL для входа в систему вы используетеhttp://, тогда он броситOAuthException о проблеме URL.

Так что вы должны использоватьhttps:// в вашем логине, если вы его используете.

Это решило мою проблему.

15

http://127.0.0.1:8000 - Однако FB изменяет это автоматическиhttp://127.0.0.1:8000/ в перенаправлении OAuth для передачи с передачей параметров запроса. Изменение моего URL в моем коде, чтобы иметь косую черту, решило проблему для меня. Я подозреваю, что они хранят окончательную полезную версию и сравнивают ее со вторым запросом.

То же самое здесь - это похоже на ошибку FB для меня. Evan Knowles
У меня тоже такой же случай. Благодарю. fightingmamoru
16

что это на 6 недель позже, но я решил опубликовать это здесь, так как нашел исправление, которое сработало для нас. Возникла та же проблема, и после попытки закодировать URL-адрес возврата (который не работал) я понял, что мы создаем наш URL-адрес примерно так:

$url = "http://example.com/";
$redirect_script = "/cgi-bin/redirect.cgi";

$redirect_url = $url . $redirect_script;

Однако это привело к обратному URL, который выглядел какhttp://example.com//cgi-bin/redirect.cgi - обратите внимание на «//» после example.com. Когда я удалил двойные слэши из этого URL, он снова заработал. OP, я вижу, что ваш URL перенаправления имеет то же самое в/facebook/callback//empty?etc Я верю, что это все портит.

Большое вам спасибо ... Работали на меня ... user1589754
@ Акаш, я подтверждаю! У меня была такая же проблема слокальный и добавление / исправило мою проблему (локальный) Lothre1
Моя проблема оказалась "слишком мало/».redirect_uri:"http://localhost:3001" не сработало. Я должен был добавить/ после URLredirect_uri:"http://localhost:3001/" работал. Я думал, что это не имеет значения, потому что Google принял первое, а Facebook - нет. Ну, это имело значение, и теперь это работает. Спасибо вам всем. Akash
12

мы видели точно такое же сообщение об ошибке. Как и вы, это начало происходить в этом месяце без каких-либо изменений в нашем коде.

Мы тщательно проверили, что redirect_uri действительно был одинаковым в обоих вызовах - сначала вызов авторизации, а затем вызов access_token.

Мы подали в Facebook, но они пометили его как «Низкий»:https://developers.facebook.com/bugs/307245456075215?browse=search_51964e3320a5b5556208759

В нашем случае мы делали что-то необычное (поэтому это может не относиться к вашему случаю). Нашим redirect_uri был URL с другим URL, встроенным в качестве закодированного элемента path. URL-адрес в URL-адресе, дважды закодированный при передаче в FB, начал вызывать проблемы с серверами API Facebook.

Мы решили эту проблему, изменив кодировку вложенного URL-адреса на длинное шестнадцатеричное число, а не на% -ную кодировку, поэтому все серверы Facebook видят простой redirect_uri, содержащий некоторые шестнадцатеричные значения в пути, на которые не влияет обычное кодирование / декодирование URL-адреса.

Я подозреваю, что Facebook изменил способ, которым они кодировали / декодировали свои параметры URL, возможно, декодируя дважды.

Если вы делаете что-то вроде нас, попробуйте этот подход. Если нет, попробуйте совершенно другой и более простой redirect_uri, чтобы посмотреть, сможете ли вы заставить что-то работать. И убедитесь, что вы правильно кодируете / декодируете все параметры запроса URL.

Спасибо! Это именно то, что случилось со мной. Я отправил URL перенаправления с другим URL в параметре. Возможный обходной путь - закодируйте внутренний URL как base64, он работает хорошо. Oleh Nechytailo
У меня такая же ситуация. Не могли бы вы написать пример - как вы закодировали URL в параметре. URI для входа в систему я отправляю из JS, но URI для получения access_token из кода, который я отправляю со стороны сервера (c #). Должен ли я кодировать в местах? Tatyana
0

Мо Град А верно, мне даже не удалось использовать символ $.

Я написал 2 простые функции, которые позволяют мне использовать сложные возвращаемые URL с параметрами:

public static string EncodeFacebookReturnUrl(string url)
{
    return Regex.Replace(HttpUtility.UrlEncode(url), "%", "_-_");
}

public static string DecodeFacebookReturnUrl(string url)
{
    return HttpUtility.UrlDecode(Regex.Replace(url, "_-_", "%"));
}

Перевод с UrlEncode приводит только к 1 «недопустимому» символу (%), который я заменяю на допустимую строку_-_, Облегчает декодирование тоже.

4

проблема оказалась в том, что redirect_uri использовал http: // URL-схему, а Facebook принимает только https: //

Как изменить URI перенаправления в omniauth-facebook, чтобы он перешел на https? Carl
Я использую http все время без проблем. Dev Null

Похожие вопросы