Android自定义Facebook登录集成
我找到了一个fb登录的例子。它正在崩溃 这就是错误: java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String com.facebook.Profile.getFirstName()” 我想做的只是点击按钮facebook将进入下一页,需要在新活动上显示个人资料图片和电子邮件ID。任何建议或链接都会很有帮助。请各位Android自定义Facebook登录集成,android,android-facebook,Android,Android Facebook,我找到了一个fb登录的例子。它正在崩溃 这就是错误: java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String com.facebook.Profile.getFirstName()” 我想做的只是点击按钮facebook将进入下一页,需要在新活动上显示个人资料图片和电子邮件ID。任何建议或链接都会很有帮助。请各位 }您面临什么问题?我只想将配置文件pic和用户名传递给下一个活动..单击登录按钮..您有一个空指针异常。错误发生
}您面临什么问题?我只想将配置文件pic和用户名传递给下一个活动..单击登录按钮..您有一个空指针异常。错误发生在返回空值的
Profile mProfile=Profile.getCurrentProfile()
上,因为String firstName=mProfile.getFirstName()
导致崩溃,因为它试图从空对象调用函数。确保配置文件首先返回正确的值。谢谢..我将签出..感谢您的时间您面临什么问题?我只想将配置文件pic和用户名传递到下一个活动..单击登录按钮..出现空指针异常。错误发生在返回空值的Profile mProfile=Profile.getCurrentProfile()
上,因为String firstName=mProfile.getFirstName()
导致崩溃,因为它试图从空对象调用函数。确保配置文件首先返回正确的值。谢谢。我会退房。谢谢你的时间
public class MainActivity extends AppCompatActivity {
private CallbackManager callbackManager;
ImageView fb_img;
public static final String PROFILE_USER_ID = "USER_ID";
public static final String PROFILE_FIRST_NAME = "PROFILE_FIRST_NAME";
public static final String PROFILE_LAST_NAME = "PROFILE_LAST_NAME";
public static final String PROFILE_IMAGE_URL = "PROFILE_IMAGE_URL";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_main);
callbackManager = CallbackManager.Factory.create();
LoginButton mLoginButton = (LoginButton)findViewById(R.id.mLoginButton);
// fb_img = (ImageView) findViewById(R.id.fb_img);
// Callback registration
mLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
String userLoginId = loginResult.getAccessToken().getUserId();
Intent facebookIntent = new Intent(getApplicationContext(), SecondActivity.class);
Profile mProfile = Profile.getCurrentProfile();
String firstName = mProfile.getFirstName();
String lastName = mProfile.getLastName();
String userId = mProfile.getId().toString();
String profileImageUrl = mProfile.getProfilePictureUri(96, 96).toString();
facebookIntent.putExtra(PROFILE_USER_ID, userId);
facebookIntent.putExtra(PROFILE_FIRST_NAME, firstName);
facebookIntent.putExtra(PROFILE_LAST_NAME, lastName);
facebookIntent.putExtra(PROFILE_IMAGE_URL, profileImageUrl);
startActivity(facebookIntent);
}
@Override
public void onCancel() {
// Toast.makeText(SignIn.this, "Login Cancel", Toast.LENGTH_LONG).show();
}
@Override
public void onError(FacebookException exception) {
// App code
// Toast.makeText(SignIn.this, "Exceptional Error", Toast.LENGTH_LONG).show();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.activity_second);
ImageView profileView = (ImageView) findViewById(R.id.profileView);
TextView profileName = (TextView) findViewById(R.id.profileName);
TextView profileUserId = (TextView) findViewById(R.id.profileUserId);
String profileUserID = returnValueFromBundles(MainActivity.PROFILE_USER_ID);
// String profileFirstName = returnValueFromBundles(MainActivity.PROFILE_FIRST_NAME);
// String profileLastName = returnValueFromBundles(MainActivity.PROFILE_LAST_NAME);
String profileImageLink = returnValueFromBundles(MainActivity.PROFILE_IMAGE_URL);
// profileName.setText(profileFirstName + " " + profileLastName);
profileUserId.setText("User ID : " + profileUserID);
Picasso.with(SecondActivity.this).load(profileImageLink).into(profileView);
}
private String returnValueFromBundles(String key) {
Bundle inBundle = getIntent().getExtras();
String returnedValue = inBundle.get(key).toString();
return returnedValue;
}