1

Я смотрел учебник по facebook developers, и он выглядит по-другому с тем, что я нашел в Интернете. Какой из них лучше всего подходит для входа в facebook? Кроме того, где лучшее место для изучения facebook sdk для Android, кажется, что официальный не является полным?Каков наилучший способ реализовать facebook login на Android?

Facebook.developer use loginButton.setRegisterCallback();

@Override 
 
public View onCreateView(
 
     LayoutInflater inflater, 
 
     ViewGroup container, 
 
     Bundle savedInstanceState) { 
 
    View view = inflater.inflate(R.layout.splash, container, false); 
 

 
    loginButton = (LoginButton) view.findViewById(R.id.login_button); 
 
    loginButton.setReadPermissions("user_friends"); 
 
    // If using in a fragment 
 
    loginButton.setFragment(this);  
 
    // Other app specific specialization 
 

 
    // Callback registration 
 
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
 
     @Override 
 
     public void onSuccess(LoginResult loginResult) { 
 
      // App code 
 
     } 
 

 
     @Override 
 
     public void onCancel() { 
 
      // App code 
 
     } 
 

 
     @Override 
 
     public void onError(FacebookException exception) { 
 
      // App code 
 
     } 
 
    });  
 
}

programmerguru.com использование UiLifecycleHelper который я не нашел его на официальных сайтах

public class MainActivity extends ActionBarActivity { 
 
    // Create, automatically open (if applicable), save, and restore the 
 
    // Active Session in a way that is similar to Android UI lifecycles. 
 
    private UiLifecycleHelper uiHelper; 
 
    private View otherView; 
 
    private static final String TAG = "MainActivity"; 
 
  
 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
        super.onCreate(savedInstanceState); 
 
        setContentView(R.layout.activity_main); 
 
        // Set View that should be visible after log-in invisible initially 
 
        otherView = (View) findViewById(R.id.other_views); 
 
        otherView.setVisibility(View.GONE); 
 
        // To maintain FB Login session 
 
        uiHelper = new UiLifecycleHelper(this, callback); 
 
        uiHelper.onCreate(savedInstanceState); 
 
    } 
 
      
 
    // Called when session changes 
 
    private Session.StatusCallback callback = new Session.StatusCallback() { 
 
        @Override 
 
        public void call(Session session, SessionState state, 
 
                Exception exception) { 
 
            onSessionStateChange(session, state, exception); 
 
        } 
 
    }; 
 
      
 
    // When session is changed, this method is called from callback method 
 
    private void onSessionStateChange(Session session, SessionState state, 
 
            Exception exception) { 
 
        final TextView name = (TextView) findViewById(R.id.name); 
 
        final TextView gender = (TextView) findViewById(R.id.gender); 
 
        final TextView location = (TextView) findViewById(R.id.location); 
 
        // When Session is successfully opened (User logged-in) 
 
        if (state.isOpened()) { 
 
            Log.i(TAG, "Logged in..."); 
 
            // make request to the /me API to get Graph user 
 
            Request.newMeRequest(session, new Request.GraphUserCallback() { 
 
  
 
                // callback after Graph API response with user 
 
                // object 
 
                @Override 
 
                public void onCompleted(GraphUser user, Response response) { 
 
                    if (user != null) { 
 
                        // Set view visibility to true 
 
                        otherView.setVisibility(View.VISIBLE); 
 
                        // Set User name 
 
                        name.setText("Hello " + user.getName()); 
 
                        // Set Gender 
 
                        gender.setText("Your Gender: " 
 
                                + user.getProperty("gender").toString()); 
 
                        location.setText("Your Current Location: " 
 
                                + user.getLocation().getProperty("name") 
 
                                        .toString()); 
 
                    } 
 
                } 
 
            }).executeAsync(); 
 
        } else if (state.isClosed()) { 
 
            Log.i(TAG, "Logged out..."); 
 
            otherView.setVisibility(View.GONE); 
 
        } 
 
    } 
 
      
 
    @Override 
 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
 
        super.onActivityResult(requestCode, resultCode, data); 
 
  
 
        uiHelper.onActivityResult(requestCode, resultCode, data); 
 
        Log.i(TAG, "OnActivityResult..."); 
 
    } 
 
      
 
    @Override 
 
    public void onResume() { 
 
        super.onResume(); 
 
        uiHelper.onResume(); 
 
    } 
 
  
 
    @Override 
 
    public void onPause() { 
 
        super.onPause(); 
 
        uiHelper.onPause(); 
 
    } 
 
  
 
    @Override 
 
    public void onDestroy() { 
 
        super.onDestroy(); 
 
        uiHelper.onDestroy(); 
 
    } 
 
  
 
    @Override 
 
    public void onSaveInstanceState(Bundle outState) { 
 
        super.onSaveInstanceState(outState); 
 
        uiHelper.onSaveInstanceState(outState); 
 
    } 
 
}

+1

Используйте официальные руководства. Причина, по которой они отличаются, заключается в том, что Facebook только что выпустил v4 SDK, что упрощает логин и доступ. Многие другие учебники в Интернете по-прежнему для v3 или даже v2 (gasp), и устарели. –

+0

Благодарю вас за ответы. он ответил на мой вопрос. – stackex

ответ

0

Как сказал @Ming Ли, придерживаться the official tutorials. Причина в том, что существует много разных учебных пособий, потому что у Facebook SDK есть много разных версий, и каждая версия может пойти по-другому, чтобы делать что-то с Facebook. Они меняют его, если они придумают лучшую идею делать что-то с Facebook.

Смежные вопросы