2
我在嘗試通過Google登錄SoundCloud授權頁面(www.soundcloud.com/connect)時遇到問題。當用戶嘗試進行身份驗證時,他們會看到一個空白頁面,並且他們不會重定向迴應用程序。它適用於Facebook登錄和常規用戶/通行證登錄。帶有Google+的Soundcloud移動認證功能返回空白頁面?
我在嘗試通過Google登錄SoundCloud授權頁面(www.soundcloud.com/connect)時遇到問題。當用戶嘗試進行身份驗證時,他們會看到一個空白頁面,並且他們不會重定向迴應用程序。它適用於Facebook登錄和常規用戶/通行證登錄。帶有Google+的Soundcloud移動認證功能返回空白頁面?
如果您使用的是WebView,則問題是它不支持彈出窗口,它們是身份驗證流程所需的。通過實現https://stackoverflow.com/a/8022295的彈出支持來實現它的工作。
private void setUpWebView() {
webView = new WebView(getContext());
webView.setWebChromeClient(new MyChromeClient());
final WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setSupportMultipleWindows(true);
webView.loadUrl(url);
}
...
final class MyChromeClient extends WebChromeClient {
// Add new webview in same window
@Override
public boolean onCreateWindow(WebView view, boolean dialog,
boolean userGesture, Message resultMsg) {
WebView childView = new WebView(getContext());
childView.getSettings().setJavaScriptEnabled(true);
childView.setWebChromeClient(this);
childView.setLayoutParams(FILL);
mContent.addView(childView);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(childView);
resultMsg.sendToTarget();
return true;
}
// remove new added webview whenever onCloseWindow gets called for new webview.
@Override
public void onCloseWindow(WebView window) {
mContent.removeViewAt(mContent.getChildCount() - 1);
}
}