Wechseln Sie nach der Authentifizierung über Single Sign On zur Facebook-Anwendungsseite

Ich arbeite an einer Anwendung, bei der ich die sozialen Funktionen von Facebook integrieren muss.

Ich möchte die SSO-Funktion (Single Sign On) verwenden. Wenn der Benutzer eine Schaltfläche in meiner App drückt, wird eine Webansicht geöffnet, in der ihm meine App-Seite in Facebook angezeigt wird, nachdem sich der Benutzer authentifiziert hat und er dies jetzt tun kann Dinge als authentifizierter Benutzer.

Ich habe das Facebook SDK heruntergeladen und in mein Projekt aufgenommen. Außerdem habe ich meine Anwendung auf der Facebook-Entwicklerseite signiert und eine APP-ID erhalten.

So sieht mein Code bisher aus:

public class WebViewLike extends Activity {

    private static final String TAG = "WebViewLike";
    public static final String APP_ID = "1222222";
    private Facebook facebook = new Facebook(APP_ID);

    private WebView webView;
    private Activity myActivity;

    private final class WallWebChromeClient extends WebChromeClient {

        public void onProgressChanged(WebView view, int progress)   
        {
            myActivity.setTitle("Loading...");
            myActivity.setProgress(progress * 100);

            if(progress == 100)
                myActivity.setTitle(R.string.app_name);
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_PROGRESS);
        setContentView(R.layout.view_weblike);
        myActivity = this;

        facebook.authorize(this, new DialogListener() {
            @Override
            public void onComplete(Bundle values) {

                Log.d(TAG, "onComplete");
                Log.d(TAG, "facebook.getAccessToken() " + facebook.getAccessToken());
                Log.d(TAG, "facebook.getAccessExpires() " + facebook.getAccessExpires()); 

                //Load the given URL
                webView.loadUrl(getFacebookWallUrl());
            }

            @Override
            public void onFacebookError(FacebookError error) {Log.d(TAG, "onComplete");}

            @Override
            public void onError(DialogError e) {Log.d(TAG, "onComplete");}

            @Override
            public void onCancel() {Log.d(TAG, "onComplete");}
        });

        initWebView();
    }

    private void initWebView() {
        webView = (WebView) findViewById( R.id.likeWebView );
        final WebSettings webSettings = webView.getSettings(); 
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webSettings.setJavaScriptEnabled(true);
        webSettings.setBuiltInZoomControls(false);
        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        webView.setHorizontalScrollBarEnabled(false);
        webView.setWebChromeClient(new WallWebChromeClient());
    }

    private String getFacebookWallUrl() {

        Log.d(TAG, "facebook.getAccessToken() != null");
        String wallUrl = "http://www.facebook.com/plugins/login.php?" + "href="
                + URLEncoder.encode("http://www.facebook.com/MyAppPage") + "&access_token="
                + URLEncoder.encode(facebook.getAccessToken());

        Log.d(TAG, "wallUrl " + wallUrl);
        return wallUrl;
    }


    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Log.d(TAG, "onActivityResult");
        facebook.authorizeCallback(requestCode, resultCode, data);
    }
}

Wenn ich jetzt auf die Schaltfläche drücke, gehe ich zu einer neuen Aktivität, die besagt, dass ich bereits autorisiert bin. Dies bedeutet, dass SSO einwandfrei funktioniert. Das Problem ist, wenn ich, wie gesagt, auf die Schaltfläche "OK" drücke und auf meine App-Seite wechseln möchte. Alle meine Versuche zeigen mir jedoch meine Facebook-Anwendungsseite, fordern mich jedoch auf, mich erneut anzumelden. Aus meiner Sicht muss ich den Anfang deswallUrl Zeichenfolge an dergetFacebookWallUrl() Methode, aber ich kann keine Informationen darüber finden.

Ist es möglich?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage