DÜZENLEME: Benim Soru e-posta, UserId, Facebook Kimlik Doğrulama Facebook SDK 4.X, Ming Yanıtla birlikte, E-posta, Kullanıcı Kimliği'ni nasıl alabileceğimi biliyorum, bu yüzden soruum Oturum Oturum ve GraphUser'ın yalnızca LoginManager ve AccessToken tarafından değiştirilmesinden bu yana Facebook Kimlik Doğrulaması'nın nasıl alınacağını ve bunun hakkında herhangi bir bilgi olmadığını nasıl anlatacağım?Android Facebook SDK 4.X, nasıl kullanılır E-posta adresi ve Facebook Erişim Simgesini Web Hizmetine iletmek için
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import com.facebook.AccessToken;
import com.facebook.AccessTokenTracker;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.Profile;
import com.facebook.ProfileTracker;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import java.util.Arrays;
public class RegisterActivity extends Activity {
private String fbUserID;
private String fbProfileName;
private String fbAuthToken;
private LoginButton fbLoginBtn;
private static final String TAG = "FacebookLogin";
CallbackManager callbackManager;
private AccessTokenTracker accessTokenTracker;
private ProfileTracker profileTracker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register_activity);
fbLoginBtn = (LoginButton) findViewById(R.id.connect_with_facebook_button);
fbLoginBtn.setReadPermissions(Arrays.asList("email", "user_photos", "public_profile"));
fbLoginBtn.setBackgroundResource(R.drawable.connect_facebook_button);
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(
AccessToken oldAccessToken,
AccessToken currentAccessToken) {
fbAuthToken = currentAccessToken.getToken();
fbUserID = currentAccessToken.getUserId();
Log.d(TAG, "User id: " + fbUserID);
Log.d(TAG, "Access token is: " + fbAuthToken);
}
};
profileTracker = new ProfileTracker() {
@Override
protected void onCurrentProfileChanged(
Profile oldProfile,
Profile currentProfile) {
fbProfileName = currentProfile.getName();
Log.d(TAG, "User name: " + fbProfileName);
}
};
fbLoginBtn.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
GraphRequest request = GraphRequest.newMeRequest(
accessToken,
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject user,
GraphResponse response) {
String id = user.optString("id");
String firstName = user.optString("first_name");
String lastName = user.optString("last_name");
String email = user.optString("email");
}
@Override
public void onSaveInstanceState(Bundle savedState) {
super.onSaveInstanceState(savedState);
}
Sen onActivityResult geçersiz kılma callbackManager.onActivityResult diyoruz ve sonra bir hale getirmek için) (sizin onSuccess bir bölüm eklemek gerekir/me GraphRequest e-posta ve userId olsun . –
@Ming, callbackManager'la ilgili sorun, ilk girişten sonra onActivityResult olarak ayarladığımda, oturum açma düğmesi kapatılıyor ve beklediğim şey bu değil, bu yüzden onActivityResult içinde callbackManager'ı kullanarak bunu nasıl düzeltebilirim? – John
@Ming, Ayrıca onSuccess'da GraphRequest kodunu nasıl kullanabileceğimi gösteren kodu da gösterebilir misiniz, sonra bunun cevabı olarak cevabınızı seçeceğim, Teşekkürler! – John