package com.sap.jam.mobile_sdk.session;
import android.app.Dialog;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.view.Window;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebSettings;
import com.sap.jam.mobile_sdk.R;
import android.util.Log;
public class JamOAuthDialog extends Dialog {
private WebView webView;
private final String initialUrl;
private WebSettings webSettings;
private static final String TAG = "JamOAuthDialog";
public ConfirmedOAuthAccessListener oauthListener = new ConfirmedOAuthAccessListener() { // dummy to avoid NPE
@Override
public void onFinishOAuthAccess(String oauthToken, String oauthVerifier) {
}
};
public interface ConfirmedOAuthAccessListener {
void onFinishOAuthAccess(String oauthToken, String oauthVerifier);
}
public JamOAuthDialog(Context context, String authUrl) {
super(context);
initialUrl = authUrl;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.auth_dialog);
setCancelable(true);
webView = (WebView) findViewById(R.id.webview);
// Wipe old web cache
webView.clearCache(true);
webView.clearFormData();
webView.clearHistory();
webView.clearMatches();
webView.clearSslPreferences();
webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setLoadsImagesAutomatically(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d(TAG, "---------------");
Log.d(TAG, "JamAuthConfig.OAUTH_CALLBACK = " + JamAuthConfig.OAUTH_CALLBACK);
Log.d(TAG, "url = " + url);
Log.d(TAG, "---------------");
if (url.startsWith(JamAuthConfig.OAUTH_CALLBACK)) {
Uri uri = Uri.parse(url);
String oauthToken = uri.getQueryParameter(JamAuthConfig.KEY_OAUTH_TOKEN);
String oauthVerifier = uri.getQueryParameter(JamAuthConfig.KEY_OAUTH_VERIFIER);
Log.d(TAG, "oauthToken = " + oauthToken);
Log.d(TAG, "oauthVerifier = " + oauthVerifier);
if (oauthToken != null && oauthVerifier != null) {
oauthListener.onFinishOAuthAccess(oauthToken, oauthVerifier);
}
JamOAuthDialog.this.dismiss();
}
}
});
webView.loadUrl(initialUrl);
}
}