Android Facebook 3.0 SDK登录方法 [英] Login Approach with Android Facebook 3.0 SDK
问题描述
在进行Facebook登录示例程序时,我遇到了SessionLoginSample的LoginUsingActvity.java
https ://github.com/facebook/facebook-android-sdk/blob/master/samples/SessionLoginSample/src/com/facebook/samples/sessionlogin/LoginUsingActivityActivity.java
While going through the sample program for Facebook Login, I came across SessionLoginSample's LoginUsingActvity.java
https://github.com/facebook/facebook-android-sdk/blob/master/samples/SessionLoginSample/src/com/facebook/samples/sessionlogin/LoginUsingActivityActivity.java
和另一个示例具有使用UiLifecycleHelper登录的不同方法,如示例示例
and another example has different approach to Login using UiLifecycleHelper as in Scrumptious example https://github.com/facebook/facebook-android-sdk/blob/master/samples/Scrumptious/src/com/facebook/scrumptious/MainActivity.java
这两种类型有什么区别,我应该放弃一种我感兴趣的简单登录权限.
What is the difference b/w those two types which one should i fallow for a simple Login with few permissions i am interested .
我遇到的另一种方法是使用OpenRequest
One more method i came across is using OpenRequest
OpenRequest op = new Session.OpenRequest((Activity) this);
op.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
op.setCallback(null);
List<String> permissions = new ArrayList<String>();
permissions.add("user_likes");
permissions.add("email");
permissions.add("user_birthday");
op.setPermissions(permissions);
Session session = new Builder(this).build();
Session.setActiveSession(session);
session.openForRead(op);
如果登录方式不只一种,我很困惑,这可能是最好的方法.
I am confused a lot to known which could be the best approach ,if there are more than one way to Login.
推荐答案
每种方法都行之有效. SDK 3.0的新功能是会话管理.您只需要管理会话状态.除了您的代码外,我还会再声明3个,然后告诉您何时使用它们.
Every approach works well. The new thing is SDK 3.0 is session management. You just have to manage session state. Apart from your code I will state 3 more and then I'll tell you when to use them.
在获得活动会话后使用Session对象.
Using Session object after getting active session.
Session session = Session.getActiveSession();
if(session ==null)
session= new Session(getApplicationContext) // Also use session builder
if (!session.isOpened() && !session.isClosed()) {
session.openForRead(new Session.OpenRequest(this)
.setPermissions(Arrays.asList("basic_info"))
.setCallback(statusCallback));
}
else
{
Session.openActiveSession(getActivity(), this, true, statusCallback);
}
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
if(session.isOpened()
//do something
}
2.
使用默认的LoginButton小部件.
By using default LoginButton Widget.
<com.facebook.widget.LoginButton
android:id="@+id/authButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
authButton.setFragment(this);
authButton.setReadPermissions(Arrays.asList(
"user_birthday",
"user_likes",
"read_stream",
));
Settings.addLoggingBehavior(LoggingBehavior.REQUESTS);
3.
使用Web对话-
Using Webdialog -
Bundle bundle = new Bundle();
bundle.putString("message", "message");
WebDialog localWebDialog = new WebDialog.Builder(this, "app_id", "oauth", bundle).build();
localWebDialog.setOnCompleteListener(new WebDialog.OnCompleteListener()
{
public void onComplete(Bundle bundle, FacebookException facebookException)
{
Session.getActiveSession();
AccessToken localAccessToken = AccessToken.createFromExistingAccessToken(bundle.getString("access_token"), null, null, AccessTokenSource.WEB_VIEW, null);
Session.openActiveSessionWithAccessToken(MainActivity.this.getApplicationContext(), localAccessToken, MainActivity.this.callback);
}
});
localWebDialog.show();
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
if(session.isOpened()
//do something
}
在设备2.3或更低版本中使用第三种方法,因为在大多数情况下,以前的方法会显示意外错误.
Use 3rd approach in devices 2.3 or lower because previous ones shows unexpected error on most cases.
这篇关于Android Facebook 3.0 SDK登录方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!