Android WebView с Facebook Войти - PullRequest
       3

Android WebView с Facebook Войти

5 голосов
/ 07 января 2011

У меня есть приложение, которое содержит веб-просмотр.Внутри веб-просмотра пользователь должен войти в Facebook, используя кнопку входа по умолчанию и аутентификацию.В моем веб-представлении после входа пользователя в URL-адрес рукопожатия oauth содержится ошибка «Отказано в доступе ... пользователь отклонил ваш запрос».Однако, когда я захожу по тому же URL-адресу в главном браузере, все работает как положено, и пользователь успешно входит в систему. Я предполагаю, что есть некоторые методы, которые мне нужно реализовать в WebViewClient или WebChromeClient, чтобы дать моему веб-браузеру полную возможность просмотра в браузере.Однако я не знаю, что делать.Мысли

1 Ответ

2 голосов
/ 05 ноября 2012

Ну, вы можете использовать Facebook SDK для своей реализации.

в основном в веб-просмотре они показали свой контент вот так

private void setUpWebView(int margin) {
        LinearLayout webViewContainer = new LinearLayout(getContext());
        mWebView = new WebView(getContext());
        mWebView.setVerticalScrollBarEnabled(false);
        mWebView.setHorizontalScrollBarEnabled(false);
        mWebView.setWebViewClient(new FbDialog.FbWebViewClient());
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.loadUrl(mUrl);
        mWebView.setLayoutParams(FILL);
        mWebView.setVisibility(View.INVISIBLE);
        mWebView.getSettings().setSavePassword(false);

        webViewContainer.setPadding(margin, margin, margin, margin);
        webViewContainer.addView(mWebView);
        mContent.addView(webViewContainer);
    }

    private class FbWebViewClient extends WebViewClient {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            Util.logd("Facebook-WebView", "Redirect URL: " + url);
            if (url.startsWith(Facebook.REDIRECT_URI)) {
                Bundle values = Util.parseUrl(url);

                String error = values.getString("error");
                if (error == null) {
                    error = values.getString("error_type");
                }

                if (error == null) {
                    mListener.onComplete(values);
                } else if (error.equals("access_denied") ||
                           error.equals("OAuthAccessDeniedException")) {
                    mListener.onCancel();
                } else {
                    mListener.onFacebookError(new FacebookError(error));
                }

                FbDialog.this.dismiss();
                return true;
            } else if (url.startsWith(Facebook.CANCEL_URI)) {
                mListener.onCancel();
                FbDialog.this.dismiss();
                return true;
            } else if (url.contains(DISPLAY_STRING)) {
                return false;
            }
            // launch non-dialog URLs in a full browser
            getContext().startActivity(
                    new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            return true;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...