Android Facebook 3.0 SDK登录方法 [英] Login Approach with Android Facebook 3.0 SDK

查看:145
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆