Facebook登录在Android中第一次后登录不起作用
问题描述:
我已经在我的应用中实现了用Facebook登录,它第一次完美工作,但第一次完全没有工作。我尝试在onSuccess方法上设置断点,但它并不止于此。这是我的Facebook登录代码。 首先,我初始化它在onCreate方法这样Facebook登录在Android中第一次后登录不起作用
FacebookSdk.sdkInitialize(this.getApplicationContext());
然后我也把这种方法的onCreate
public void LoginViaFacebook() {
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// AppSharedPreference.getInstance(LoginActivity.this).setFbAccessToken(loginResult.getAccessToken().getToken().toString());
final GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
try {
if (object.getString("id") != null) {
String fbId = object.getString("id");
String name = object.getString("name");
String imageUrl = object.getJSONObject("picture").getJSONObject("data").getString("url");
int randomPIN = (int) (Math.random() * 9000) + 1000;
String password = String.valueOf(randomPIN);
String nettype = "2";
param.add(new BasicNameValuePair("name", "Vivian"));
param.add(new BasicNameValuePair("lastname",fbId));
param.add(new BasicNameValuePair("email","[email protected]"));
param.add(new BasicNameValuePair("password",password));
param.add(new BasicNameValuePair("nettype",nettype));
new FbRegisterAsyncTask().execute();
// getLoginTokenViaAPI(fbId);
//registerUser(name, name, fbId, password,nettype);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender,picture,birthday,link,location");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
//AppUtils.showDialog(LoginActivity.this, getResources().getString(R.string.fb_login_cancel));
}
@Override
public void onError(FacebookException exception) {
//AppUtils.showDialog(LoginActivity.this, getResources().getString(R.string.fb_login_error) + exception.getMessage().toString());
}
});
}
onActivityResult方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case RC_FB_IN:
callbackManager.onActivityResult(requestCode, resultCode, data);
break;
}
}
和按钮点击我这样做
iv_facebook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LoginManager.getInstance().logInWithReadPermissions(ActivityLogin.this, Arrays.asList("public_profile", "user_friends", "user_location", "email", "user_birthday"));
//LoginViaFacebook();
}
});
答
成功登录后,您需要在转到下一个活动之前从fb注销,以便使用此代码从Facebook注销。
LoginManager.getInstance().logOut();
+0
提供的密钥哈希你在哪里找到它?这没有意义。即使在使用注销后, –
+0
也不能正常工作。第一次登录后,它给了我错误,也是错误是空白!!!!!!!!!!!!!! –
发现任何@Vivek –
@SagarNayak你必须通过生成的代码,而不是一个由CMD –