私の Android アプリでは、ユーザーは私の Facebook ページに「いいね!」をすることができます。したがって、Facebook のようなボックスを含む Web ページをロードする Web ビューを使用します。ページが webview に適切に読み込まれると、次のことが起こります。
- WebView は、Facebook のようなボックスで Web ページを読み込みます
- Likeボタンをクリックすると、ユーザーはFacebookのログインページにリダイレクトされます
- ログイン後、ユーザーは再びカスタムのようなページにリダイレクトされます
- しかし、いいねボタンをクリックすると、ユーザーは再びFacebookのログインページにリダイレクトされます
だから私は、ログイン後に同様のことが可能であると期待しています.webviewがログインを覚えていないようです。したがって、これを修復するにはどうすればよいですか。
次のスクリーンショット シーケンスは、何が起こっているかを示しています。
facebook sdk for android の使用は避けたい!特に、この手順は私の iPhone バージョンのアプリで非常にうまく機能します。
目的の機能を実装するために使用されるコードを次に示します。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final WebView fbWebView = (WebView) findViewById( R.id.facebookWebView );
fbWebView.getSettings().setJavaScriptEnabled(true);
fbWebView.setWebViewClient( new WebViewClient() {
@Override
public WebResourceResponse shouldInterceptRequest (WebView view, String url) {
Log.d("call url", url );
if ( url.contains("login.php?skip_api_login") ) {
fbWebView.loadUrl("http://www.example.de/iphone_facebook_like_page.html");
return null;
}
if( url.contains("user_successfully_liked") )
fbWebView.loadUrl("http://www.example-success.de");
return null;
}
});
fbWebView.loadUrl("http://www.example.de/iphone_facebook_like_page.html");
}
編集:クッキーを受け入れるために次のことも試しましたが、どれも機能しませんでした
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CookieSyncManager.createInstance(this);
CookieSyncManager.getInstance().startSync();
CookieManager.setAcceptFileSchemeCookies(true);
CookieManager.getInstance().setAcceptCookie(true);
//rest is the same...
オーバーライドも機能しませんでした
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}