如何打开Facebook的粉丝页,并检查用户是否喜欢它

以下是我正在努力工作的stream程:

  1. 活动打开并向用户显示“赞”button
  2. 用户点击button,Facebook的login屏幕显示
  3. 用户login,并指向粉丝页面(通过意图或WebView …或其他任何工作:)
  4. 用户喜欢这个页面
  5. 用户按下Android的后退button并返回到活动
  6. 活动恢复并检查用户是否确实喜欢该页面。 如果他这样做,分给他。

所以,对于这个解决scheme,我使用了RestFB( http://restfb.com/ )和Facebook Android API v3.0

当用户点击Likebutton时,我执行以下操作:

private Session.StatusCallback callback = new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { //facebookClient is the RestFB object facebookClient = new DefaultFacebookClient(session.getAccessToken()); Intent i = new Intent(MainActivity.this, FacebookWebViewActivity.class); startActivity(i); } }; 

有了这段代码,我可以成功login到Facebook(获取AUTH_CODE),然后调用我的WebView,它应该引导用户到我想要的粉丝页面。 这个WebView活动非常简单,只需要:

 webView.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) { Intent intent = new Intent(FacebookWebViewActivity.this, MainActivity.class); startActivity(intent); return true; } return false; } }); webView.loadUrl("https://www.facebook.com/<MyFanPage>"); 

如果用户在WebView中按下后退button,我应该将其redirect到我的MainActivity。 我期待的活动的onResume()方法来触发发生这种情况,但它不是,由于某种原因….我打算把checkIfLikes(null)这个方法来检查是否喜欢发生。

到目前为止,我可以检查使用是否喜欢使用以下FQL的页面:

 public void checkIfLikes(View v) { final Session session = Session.getActiveSession(); AsyncTask.execute(new Runnable() { public void run() { try { facebookClient = new DefaultFacebookClient(session.getAccessToken()); User user = facebookClient.fetchObject("me", User.class); Page page = facebookClient.fetchObject("GeoWhere", Page.class); String query = "SELECT uid FROM page_fan WHERE page_id=" + page.getId() + " and uid=" + user.getId(); List<FqlUser> users = facebookClient.executeFqlQuery(query, FqlUser.class); } catch(com.restfb.exception.FacebookException ex) { Log.e(TAG, "1" + ex.getMessage()); } catch(Exception e) { Log.e(TAG, "2" + e.getMessage() + e.getStackTrace().toString()); } } }); } 

任何人都可以帮我实现这个目标

而最重要的是,我无法在Facebook的v3 API上find任何地方打开FanPage的好方法。 我真的必须使用WebView吗? 我不喜欢用户必须离开我的应用程序的方式喜欢粉丝页面…我不喜欢这个用户体验…

谢谢你,Felipe

编辑1:我现在调用这个代码去我的页面:

 public static Intent getOpenFacebookIntent(Context context) { try { context.getPackageManager().getPackageInfo("com.facebook.katana", 0); return new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/104585606418628")); } catch (Exception e) { Log.e(TAG, ""+e.getMessage()); return new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/GeoWhere")); } } 

它运作良好,我可以喜欢的页面。 当按下button并返回到我的Activity时,不会调用onResume。 事实上,整个活动是悬而未决的。 button不回答。 当我再次按下,onResume被调用,但我失败: User canceled operation. 这发生在com.facebook.widget.LoginButton 。 很奇怪。

编辑2

似乎我修好了。 正在调用Facebook的call()方法内的startActivity(),并使call()方法不完全完成。 所以会议的状态没有公开。 所以我做的是:

 public void call(Session session, SessionState state, Exception exception) { facebookClient = new DefaultFacebookClient(session.getAccessToken()); //startActivity(getOpenFacebookIntent(MainActivity.this)); //launchFacebook(); //Intent i = new Intent(MainActivity.this, FacebookWebViewActivity.class); //startActivity(i); IS_SOCIAL = true; } 

在代码的其他地方,我检查用户是否loginFacebook并继续发送给粉丝页面

保重 !!

Solutions Collecting From Web of "如何打开Facebook的粉丝页,并检查用户是否喜欢它"