您可以使用Felipe在其答案中提到的相同方式,或者使用其他两种方式。但似乎AccessTokenTracker是方便的方法,因为它帮助您跟踪访问令牌(与ProfileTracker类一起使用)
- 如果您正在使用自定义按钮进行登录,请使用LoginManager回调函数
例如:
在您的布局xml中
<Button
android:id="@+id/my_facebook_button"
android:background="@drawable/btnfacebook"
android:onClick="facebookLogin"/>
在你的Activity中
//Custom Button
Button myFacebookButton = (Button) findViewById(R.id.my_facebook_button)
按钮 onclick 监听器
public void facebookLogin(View view) {
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_friends"));
}
在LoginManager回调函数的结尾处
CallbackManager callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.i(TAG, "LoginManager FacebookCallback onSuccess");
if(loginResult.getAccessToken() != null) {
Log.i(TAG, "Access Token:: " + loginResult.getAccessToken());
facebookSuccess();
}
}
@Override
public void onCancel() {
Log.i(TAG, "LoginManager FacebookCallback onCancel");
}
@Override
public void onError(FacebookException e) {
Log.i(TAG, "LoginManager FacebookCallback onError");
}
});
- 如果你正在使用SDK中提供的按钮(com.facebook.login.widget.LoginButton),请使用LoginButton回调函数(这在他们的参考文档中非常详细地说明了-https://developers.facebook.com/docs/facebook-login/android/v2.3)。
例如:
在你的布局xml中:
<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"/>
在你的活动中
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("user_friends");
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.i(TAG, "LoginButton FacebookCallback onSuccess");
if(loginResult.getAccessToken() != null){
Log.i(TAG, "Access Token:: "+loginResult.getAccessToken());
facebookSuccess();
}
}
@Override
public void onCancel() {
Log.i(TAG, "LoginButton FacebookCallback onCancel");
}
@Override
public void onError(FacebookException exception) {
Log.i(TAG, "LoginButton FacebookCallback onError:: "+exception.getMessage());
Log.i(TAG,"Exception:: "+exception.getStackTrace());
}
});
不要忘记在您的Activity的onActivityResult()方法中调用
callbackManager.onActivityResult(requestCode, resultCode, data);
。