我正在为facebook公共页面发帖工作。我的客户将使用Facebook(在我的应用程序内)登录,将他们的公共页面链接到我的应用程序。通过此登录,可以获取客户在Facebook创建的公共页面列表吗?
截至目前,我可以获取用户详细信息,但不能获取页面AND事件。
答案 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)