7

在 HTML 文件中,我使用了 Facebook 社交评论插件,它运行良好,但是当我尝试使用 webview 在 android 中显示相同的文件时,它只显示评论而不是评论框,并且显示一个按钮“登录 facebook 发布评论”。当我尝试通过单击该按钮而不是显示评论框来登录时;该页面正在重定向到 facebook 个人资料。请帮助...

这是代码:

HTML 代码:

 <head>
 <meta content='website' property='og:type'/>
 <meta content='http://graph.facebook.com/username' property='fb:admins'/>
 <meta content='http://example.com/test.html' property='og:site_name'/>
 <meta content='415944175093180' property='fb:app_id'/>
 <meta content='Browser Detect' property='og:title'/>
 <meta content='Tells about Early days' property='og:description'/>
 <meta content='http://example.com/test.html' property='og:url'/>
 <meta content='http://example.com/test.html' property='og:image'/>
 </head>
 <body>
 <div id="fb-root"></div>
 <script>
 window.fbAsyncInit = function() {
    FB.init({
    appId: '415944175093180', status: true, cookie: true, xfbml: true,oauth: true}); };
    (function() {
    var e = document.createElement('script');
    e.type = 'text/javascript';
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
  }());

  (function(d){
  var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
  if (d.getElementById(id)) {return;}
  js = d.createElement('script'); js.id = id; js.async = true;
  js.src = "//connect.facebook.net/en_US/all.js";
  ref.parentNode.insertBefore(js, ref);
  }(document));
  </script> 
  <fb:comments href="http://example.com/test.html" num_posts="20" width="470" />    
  </body>

安卓代码:

公共类 SimpleActivity 扩展 Activity {

WebView web1;

ViewPager awesomePager;
    Context cxt;
    List<WebView> data;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.main);
    cxt = this;
    data = new ArrayList<WebView>();

    awesomePager = (ViewPager) findViewById(R.id.viewPager);
    awesomePager.setOffscreenPageLimit(10);

    WebView web1 = new WebView(cxt);
    web1.loadUrl("http://example.com/test.html");
            WebSettings webSettings1 = web1.getSettings();

            webSettings1.setJavaScriptEnabled(true);

    data.add(web1);
            awesomePager.setAdapter(new AwesomePagerAdapter(this,data));

}

4

1 回答 1

0

可能是在“标准”html中,使用网络浏览器,会话被保存了一些,这样你就可以登录到facebook,你可以作为登录用户发表评论,即使你关闭浏览器并启动它再次启动(cookies、“让我保持登录状态等)。

另一方面,Android 浏览器可能不会缓存/保存会话,应用程序可能已被终止,等等。所以你不太可能有一个“永远在线”的会话。

当然,facebook 会识别这一点并向您显示登录表单,因为您不能以匿名用户的身份发表评论。

AFAIK 一种解决方案是使用Facebook API而不是 Javascript 登录,以便您的应用程序永久获得授权,以登录用户身份访问用户数据/发表评论。

于 2012-07-25T14:07:00.027 回答