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?