我按照API facebook指南,这是代码:
ib2 = (ImageButton) findViewById(R.id.imageButton2);
list = new OnClickListener() {
public void onClick(View v) {
/*
* Get existing access_token if any
*/
mPrefs = getPreferences(MODE_PRIVATE);
String access_token = mPrefs.getString("access_token", null);
long expires = mPrefs.getLong("access_expires", 0);
if(access_token != null) {
facebook.setAccessToken(access_token);
}
if(expires != 0) {
facebook.setAccessExpires(expires);
}
/*
* Only call authorize if the access_token has expired.
*/
if(!facebook.isSessionValid()) {
facebook.authorize(Answer.this, new String[] {"user_about_me","publish_checkins"}, new DialogListener() {
public void onComplete(Bundle values) {
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("access_token", facebook.getAccessToken());
editor.putLong("access_expires", facebook.getAccessExpires());
editor.commit();
}
public void onFacebookError(FacebookError error) {}
public void onError(DialogError e) {}
public void onCancel() {}
});
}
}};
ib2.setOnClickListener(list);
和
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
facebook.authorizeCallback(requestCode, resultCode, data);
}
每个人都在正确的位置上有正确的声明。和...
第一次按下按钮上的Onclick,facebook要求我接受我的应用程序所需的权限。
但是...
我第二次在同一个按钮上执行Onclick时,Facebook窗口无法打开。为什么会那样?
如果我设置权限,我应该看到授权OK !!!
答案 0 :(得分:1)
我不知道这是不是问题,但您可以尝试强制对话:facebook.authorize(Answer.this, new String[] {"user_about_me","publish_checkins"}, Facebook.FORCE_DIALOG_AUTH, new DialogListener() {
我不太明白你在这里遇到了什么,所以请让我知道它是如何运作的。
答案 1 :(得分:0)
"The first time doing Onclick on the button, facebook ask me to accept the permissions required for my app."
在这种情况下,由于这是您第一次使用Facebook登录应用程序,因此您的应用程序没有访问令牌并且过期
facebook.isSessionValid()=假
- > facebook.authorize()将运行
Facebook将要求您获得许可(因为您的Facebook会员之前从未允许您的应用)
但是第二次,
访问令牌和过期已保存到共享首选项, ==> facebook.isSessionValid()为true,
==> facebook.authorize()将无法运行
==>似乎已登录
因此Facebook窗口不会弹出。
如果您想再次看到Facebook弹出窗口,
1)清理应用的缓存
2)终止应用程序(共享首选项中的访问令牌将被清除)
然后你会看到一个facebook登录窗口弹出,但你不会看到预设页面,因为你已经允许你的应用程序(只需要允许一次)
如果您想再次查看Facebook权限页面,只需转到您的Facebook,转到隐私设置 - >广告,应用和网站 - >按编辑设置并取消授权您的APP。 然后将再次弹出Premission页面,以便您下次登录该应用程序