我正在尝试在Android WebView中使用类似Facebook的功能(项目规范不允许浏览器打开,或任何不在应用程序活动中).
因此,限制是它必须在WebView中完成.我已经设法使它成为一个对话框,并且用户点击按钮,它(WebView)成功(在同一视图中)重定向到facebooks登录页面.身份验证成功后,WebView(在对话框中)将重定向到带有标题的空白页面.
有趣的是,当用户离开空白对话框并再次单击类似按钮时,它的工作方式非常完美(喜欢和不同) - 它以某种方式保持身份验证活动.要解决空白页面,我尝试过/使用过以下内容:
WebViewClient和shouldOverloadUrlForwarding保持整个过程在同一个WebView对话框中.WebChromeClient正确执行JavaScript -登录后没有它不可能喜欢/不象.setUserAgentString()模拟其他浏览器,如Chrome或Firefox尝试了SSL错误证书处理(API级别8)(at WebViewClient)
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
使用(以及所有可能的组合)
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
试图坚持使用饼干CookieSyncManager,CookieManager并手动处理.
所有这一切都没有结果.我非常感谢任何帮助!
我正在开发像按钮一样的facebook来集成我的应用程序.这里是从developers.facebook.com复制的html代码
<html>
<body>
<div id="fb-root"></div>
<script>
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id))
return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=my_app_id";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<fb:like data-href="http://www.facebook.com/facintegra" data-send="true" data-width="450" data-show-faces="false" data-font="tahoma"/>
</body>
Run Code Online (Sandbox Code Playgroud)
我的android活动代码
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebView.loadUrl("file:///android_asset/FacebookLikeView.html");
m_cObjFacebook = new Facebook("Your_id");
authorizefacebook();
}
private void authorizefacebook(){
m_cObjFacebook.authorize(this, m_cPermissions, new DialogListener() {
@Override
public void onComplete(Bundle values) {
m_cAccessToken = values.getString(Facebook.TOKEN);
}
@Override
public void onFacebookError(FacebookError error) {
System.out.println(error.toString()); …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现Facebook Like按钮,它不是使用WebView的Android Facebook SDK的一部分.这个想法非常简单.我使用SDK使用SSO登录用户帐户,因此如果用户已登录android FB应用程序,则用户无需再次键入登录名/密码.然后我想使用WebView插入标准的Like Button.
我已经拥有用户身份验证令牌,在墙上发送状态的权限等.问题是如何告诉WebView用户已经登录.我试图使用由FB生成的URL(webview.loadURL())的WebView(启用JS):
http://www.facebook.com/plugins/like.php?href=myurl&send=false&layout=button_count&width=450&show_faces=true&action=like&colorscheme=light&font&height=21&appId=myId"
+ "&token=" + mFacebook.getAccessToken()+"&expires="+mFacebook.getAccessExpires(); //(or auth_token instead)<br>
Run Code Online (Sandbox Code Playgroud)
显然这是错误的/或者不应该以这种方式发送自动化,因为在点击Like按钮后,用户被重定向到Web浏览器中的登录页面.
所以问题是如何编辑此URL或如何在WebView中设置cookie(在CookieManager中设置为URL以及哪些cookie)以便用户签名.
感谢您的帮助!
我想在我的Android应用程序中显示类似按钮.下面是我用来在Android应用程序中显示Like按钮的代码.
String url = "http://www.facebook.com/plugins/like.php?layout=standard&show_faces=true&width=80&height=50&action=like&colorscheme=light&href=http://beta.demo.dy/web/service/304.htm"
webview = (WebView) findViewById(R.id.webView1);
webview.loadUrl(url);
webview.setWebViewClient(new LikeWebviewClient());
public class LikeWebviewClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此应用程序时,它显示一个白色区域.怎么解决这个?
我想在我的Android应用程序中集成一个类似的按钮.我用过代码
likeWebView = (WebView) findViewById( R.id.webView1 );
likeWebView.getSettings().setJavaScriptEnabled(true);
String url = "http://www.facebook.com/plugins/like.php?" +
"href=" + URLEncoder.encode("likeurl" ) + "&" +
"layout=standard&" +
"show_faces=false&" +
"width=500&" +
"action=like&" +
"colorscheme=light&" +
"access_token=" + URLEncoder.encode( "read_stream" );
likeWebView.loadUrl( url );
Run Code Online (Sandbox Code Playgroud)
但登录后显示空白页面.请给我一个添加Like按钮的解决方案.
我WebView在我的Android应用程序中嵌入了类似按钮.
我通过SSO使用facebook-android-sdk登录我的Android应用程序; 但是当我点击"赞"按钮时,它仍然会提示登录页面(当然它确实如此).
我想知道是否有任何方法让WebView我知道我已经登录(例如提供access_token网页中的某个地方)?
谢谢.
我试图通过我的Android应用程序喜欢facebook上的网址.我正在使用android webview来显示类似的按钮,但是当我点击它时,没有任何反应,它显示一个空白页面.但是当我在Android网页浏览器中使用相同的URL时,收益如预期,并喜欢链接.
我使用以下代码
WebView like_btn = (WebView) findViewById(R.id.WEBView);
String url = "http://www.facebook.com/plugins/like.php?layout=standard&show_faces=true&width=80&height=50&action=like&colorscheme=light&href=http://google.com";
like_btn.loadUrl(url);
like_btn.getSettings().setJavaScriptEnabled(true);
like_btn.getSettings().setAppCacheEnabled(true);
like_btn.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
Run Code Online (Sandbox Code Playgroud)
我是做得对还是有其他方法来实现这个功能?在SO上还有其他与此问题相关的问题,但他们只说明了如何关闭空白页面.真正的问题是它甚至不喜欢这个网址.
还有一些其他旧的SO问题提出了类似的问题,但似乎没有任何确定的答案.自问这些问题以来已经过了一段时间,所以我想知道是否有办法做到这一点呢?
看看Facebook的Android SDK,有关于如何在墙上分享内容,将图片发布到墙上,登录,注销等等的示例......但似乎没有任何关于添加简单的Like按钮的内容.我希望能够在我的应用程序中添加一个Like按钮(通过ImageView或可能是一个样式的按钮),一旦点击Facebook就会加载一个授权登录对话框,然后请求你允许喜欢该应用程序.
这似乎是他们在那里会有的......我只是没有看到它?
有些人建议制作一个小小的WebView,其大小与HTML Facebook Like按钮相同,并将其集成到您的布局中.这个问题是,当用户点击WebView中的Like按钮时,它会想要打开一个Javascript窗口供用户登录到Facebook,但是这个对话框几乎肯定不适合微小的WebView.
是否有任何明确的方法在Android应用程序中添加FaceBook Like按钮?