嘿,有人能指出我在Android的Facebook教程的正确方向吗?他们的开发者网站的教程并不是那么好。
这是我到目前为止所提出的:
public static final int FBResultCode = 100;
private static Session.StatusCallback sharedFBStatusCallback = new Session.StatusCallback()
{
@Override
public void call(Session session, SessionState state, Exception exception)
{
if(exception != null)
Log.e("fb error", exception.toString());
switch(state)
{
case OPENED:
//login successful
break;
case CLOSED:
case CLOSED_LOGIN_FAILED:
closeFBSession();
break;
default:
break;
}
}
};
public static void openFBSessionWithLoginUI(boolean loginUI)
{
Session session = Session.getActiveSession();
if (session != null &&
!session.isOpened() &&
!session.isClosed())
{
ArrayList<String> perms = new ArrayList<String>();
perms.add("user_likes");
perms.add("user_birthday");
perms.add("read_friendlists");
Session.OpenRequest openRequest = new Session.OpenRequest(rootActivity)
.setCallback(sharedFBStatusCallback)
.setDefaultAudience(SessionDefaultAudience.FRIENDS)
.setLoginBehavior(loginUI? SessionLoginBehavior.SUPPRESS_SSO: SessionLoginBehavior.SSO_ONLY)
.setRequestCode(FBResultCode)
.setPermissions(perms);
session.openForRead(openRequest);
}
else
{
Session.openActiveSession(rootActivity, loginUI, sharedFBStatusCallback);
}
}
private static void closeFBSession()
{
Session currentSess = Session.getActiveSession();
if(currentSess != null)
{
currentSess.closeAndClearTokenInformation();
}
}
然而,这会返回错误:
E / fb错误(3601):java.lang.UnsupportedOperationException:Session: 尝试打开具有待处理请求的会话。
我做错了什么?或者更好的是,处理fb登录的最佳方法是什么?
答案 0 :(得分:6)
我使用过本教程并且工作正常:
http://www.androidhive.info/2012/03/android-facebook-connect-tutorial/
还有这个,非常详细。 https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/
我还使用此逻辑使用现有令牌登录,因为在我的应用程序中,它始终与同一用户连接,而不是某种事件。
答案 1 :(得分:3)
除了Gilson之外,本教程对于那些尝试将facebook连接到他们的Android应用程序的人也很有帮助。
http://ericosgood.com/prog/facebook-android-sdk-tutorial/
http://tutotialandroid.blogspot.com/2013/06/easy-facebook-android-sdk-simple.html
Androidhive也是一个非常有用的链接..