Facebook как кнопка в WebView с SDK

Я пытаюсь реализовать кнопку Facebook Like, которая не является частью Android Facebook SDK с использованием WebView. Идея очень проста. Я использую SDK для входа в учетную запись пользователя, используя SSO, поэтому пользователю не нужно снова вводить имя пользователя / пароль, если пользователь уже зарегистрирован в приложении Android Android. Затем я хочу использовать WebView для вставки стандартной кнопки Like Button.
У меня уже есть пользовательский токен авторизации, разрешение на отправку статуса на стену и т. Д. Проблема заключается в том, как сообщить WebView, что пользователь уже выполнил вход. Я пытался использовать WebView (с включенным JS) с этим URL (webview.loadURL ()), сгенерированным FB:

http://www.facebook.com/plugins/like.php?href=myurl&send=false&layout=button_count&width=450&show_faces=true&action=like&colorscheme=light&font&height=21&appId=myId" + "&token=" + mFacebook.getAccessToken()+"&expires="+mFacebook.getAccessExpires(); //(or auth_token instead)<br> 

Очевидно, что это неверно / или недостаточно, чтобы отправить авторизацию таким образом, потому что после нажатия кнопки «Как» пользователь перенаправляется на страницу входа в веб-браузер.
Поэтому вопрос заключается в том, как отредактировать этот URL-адрес или как установить cookie-файлы (что нужно установить для URL-адреса в CookieManager и какие куки-файлы) в WebView для входа пользователя.
Спасибо за любую помощь!

Я не совсем уверен, что токен доступа к FB-адресу действителен для использования веб-api, но давайте попробуем что-нибудь.

Во-первых, убедитесь, что вы фактически используете файлы cookie для своего экземпляра WebView:

 CookieManager.getInstance().setAcceptCookies(true); 

Я не уверен, будет ли страница перенаправления facebook пытаться установить файлы cookie, поэтому попробуйте это и посмотрите, не делает ли это трюк:

 webview.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); 

Это заставит ваш WebView открывать ссылки внутри себя, поэтому файлы cookie – если они есть – не будут потеряны, если подобная страница выдает перенаправление.

Если проблема по-прежнему сохраняется, вы также можете попробовать настроить файлы cookie вручную, выполнив это, прежде чем загружать URL-адрес в WebView:

 // This just initializes the sync manager, do it once CookieSyncManager.createInstance(this); CookieManager.getInstance().setCookie("facebook.com", "token=" + mFacebook.getAccessToken() + "; domain=facebook.com"); CookieSyncManager.getInstance().sync(); 

Я думаю, что это то, что вы ищете: https://developers.facebook.com/docs/authentication/server-side/

Если я правильно это прочитаю, то после реализации OAuth вы можете использовать Graph API для реализации кнопки «Like», которую вы ищете, потому что вы можете аутентифицировать устройство, а не только пользователя.

Intereting Posts
Android NoClassDefFoundError: com.google.firebase.FirebaseOptions Очистить стек обратно, когда объект приложения будет убит системой Реализация отслеживания местоположения на Android Прямой видеоролик Vimeo для Android Вход с аппаратной клавиатуры теряет фокус Как конвертировать `content: // media / external / images / media / Y` to` file: /// storage / sdcard0 / Pictures / X.jpg` в android? Как создать простой-xml-аннотированный объект java из схемы xsd Ошибка чтения: ошибка в библиотеке SSL, обычно ошибка протокола Android.database.StaleDataException: Попытка получить доступ к курсору после его закрытия Удалить дубликат в ArrayList пользовательских объектов Вырезание многоточечного слога из растрового изображения и его размещение на прозрачности Android: сохраните MediaPlayer во время обновления ориентации экрана Activity Как сохранить и получить путь к картинке Cropped Android с SD-карты? Панель уведомлений серая после реализации Nav Drawer Пользовательские настройки, сохраненные в SharedPreferences, удаленные или потерянные между перезагрузками приложения