如何将特定登录的公共Facebook页面数据(app)导入我的Android应用程序?

时间:2014-04-16 10:07:00

标签: android facebook

我正在为facebook公共页面发帖工作。我的客户将使用Facebook(在我的应用程序内)登录,将他们的公共页面链接到我的应用程序。通过此登录,可以获取客户在Facebook创建的公共页面列表吗?

截至目前,我可以获取用户详细信息,但不能获取页面AND事件。

2 个答案:

答案 0 :(得分:1)

经过长时间的研究后,这是我对自己问题的回答,它与公共页面一起作为活动结果的回应。

public class AdminFbLogin extends Activity {
private ProgressDialog pDialog;
private String userName ="", accessToken = "";
private JSONArray fbPages = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    facebookLogout();
    pDialog = new ProgressDialog(this);
    pDialog.setMessage("loading");
    pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    pDialog.setCanceledOnTouchOutside(false);
    try{
    Session.openActiveSession(AdminFbLogin.this, true, new Session.StatusCallback() {

        // callback when session changes state
        @SuppressWarnings("deprecation")
        @Override
        public void call(Session session, SessionState state, Exception exception) {
            if (session.isOpened()) {

                // make request to the /me API
                Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

                    // callback after Graph API response with user
                    // object
                    @Override
                    public void onCompleted(GraphUser user, Response response) {
                        if (user != null) {
                            userName = user.getName();
                            if(fbPages != null ) {
                                returnAccessToken();
                            }
                        }
                    }
                });
            }

        }
    });
    } catch(Exception e){
        Toast.makeText(AdminFbLogin.this, "Please check your internet connection. ", Toast.LENGTH_LONG).show();
        pDialog.dismiss();
        Log.e("AdminFBLogin Error",e.getLocalizedMessage(),e);

    }

}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
    accessToken =  Session.getActiveSession().getAccessToken();

    final Session session = Session.getActiveSession();
    if (session.isOpened()) {
        new Request(session, "/me/accounts", null, HttpMethod.GET, new Request.Callback() {
            public void onCompleted(Response response) {
                try{
                    GraphObject go = response.getGraphObject();
                    fbPages = (JSONArray) go.getProperty("data");
                    Log.d("User Response :", response.toString());
                    if(!userName.equals("")) {
                        returnAccessToken();
                    }
                } catch(Exception e){
                    Log.e("JSOn Exception", e.getLocalizedMessage(),e);
                }
            }
        }
    ).executeAsync();
    }
}
private void returnAccessToken(){
    Intent data = new Intent();
    data.putExtra("accessToken", accessToken);
    data.putExtra("fbPages", fbPages.toString());
    data.putExtra("userName", userName);
    setResult(RESULT_OK, data);
    facebookLogout();
    finish();
}
}

答案 1 :(得分:0)