【发布时间】:2014-10-18 10:00:48
【问题描述】:
我创建了一个long-lasting Facebook 访问令牌。我有一个来自 Facebook 的 TestApp 的应用 ID。问题是我似乎无法获得有效的会话!我做错了什么?
public class MainActivity extends Activity {
Facebook fb;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fb = new Facebook(getString(R.string.APP_ID));
fb.setAccessToken(getString(R.string.ACCESS_TOKEN));
//Expiry is set to 0, since the token never expires
fb.setAccessExpires(0);
if (fb.isSessionValid()) {
Toast.makeText(this, "Session is valid",
android.widget.Toast.LENGTH_LONG).show();
Log.d("TAG2", getString(R.string.ACCESS_TOKEN));
} else
Toast.makeText(this,
"Session is Invalid"+ getString(R.string.ACCESS_TOKEN),
android.widget.Toast.LENGTH_LONG).show();
Log.d("TAG3", getString(R.string.ACCESS_TOKEN));
}
}
编辑的代码(我编辑了我的原始代码以反映给出的两个答案,但仍然没有帮助):
public class MainActivity extends Activity {
Facebook fb;
SharedPreferences prefs;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = prefs.edit();
editor.putString("AKEY",getString(R.string.ACCESS_TOKEN));
editor.commit();
editor.apply();
fb = new Facebook(getString(R.string.app_id));
fb.setAccessToken(prefs.getString("AKEY", ""));
//Expiry is set to 0, since the token never expires
fb.setAccessExpires(0);
if (fb.isSessionValid()) {
Toast.makeText(this, "Session is validd",
android.widget.Toast.LENGTH_LONG).show();
Log.d("TAG2", getString(R.string.ACCESS_TOKEN));
} else {
Toast.makeText(this, fb.toString(),
android.widget.Toast.LENGTH_LONG).show();
Log.d("TAG3", fb.toString() + fb.getAccessExpires()
+ "Access Token is: " + fb.getAccessToken() +prefs.getString("AKEY", "")
+ "Last update is:" + fb.getLastAccessUpdate()
+ "Session is:" + fb.getSession());
}
}
}
【问题讨论】:
-
您使用旧 API 有什么原因吗?
-
@ItzikSamara 不,我认为这是使用 FB 的 API 获取会话的标准方式。
-
如果您可以添加 Facebook 登录按钮,我会写下完整的答案。
-
@ItzikSamara 实际上我只需要从我管理的一个页面中获取状态。这就是为什么我创建了持久令牌以允许我监控页面。没有其他人会使用它。
标签: android facebook facebook-graph-api android-facebook