[英]onActivityResult is not calling while using facebook login in android
我已经整合了Facebook,并在Facebook开发者帐户中创建了应用。 我已经在Facebook开发者帐户中注册了FBHelper活动,一旦接收到数据/ facebook详细信息,就使用了setResult方法,但它没有调用LoginActivity.java的onActivityResult()方法。
代码:LoginAcitivity.java
Intent intent = new Intent(LoginActivity.this, FBHelper.class);
startActivityForResult(intent,2);
LoginActivity.java的onActivityResult()
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 2 && resultCode == RESULT_OK) {
String jsondata=data.getStringExtra("userProfile");
try {
JSONObject response = new JSONObject(jsondata);
String email = (response.get("email").toString());
String fname = (response.get("first_name").toString());
String lname = (response.get("last_name").toString());
String id = (response.get("id").toString());
Toast.makeText(loginActivity,"facebook", Toast.LENGTH_SHORT).show();
Social_Login(email, id, fname, lname, "facebook");
} catch(Exception e){
e.printStackTrace();
}
}
}
FBHelper.java
public class FBHelper extends AppCompatActivity {
CallbackManager callbackManager;
private CallbackManager mFacebookCallbackManager;
private Context myActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fb_helper);
try {
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
callbackManager = CallbackManager.Factory.create();
AccessToken accessToken = AccessToken.getCurrentAccessToken();
boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
LoginManager.getInstance().logOut();
LoginManager.getInstance().logInWithReadPermissions(FBHelper.this, Arrays.asList("public_profile", "email"));
LoginManager.getInstance().setLoginBehavior(LoginBehavior.DEVICE_AUTH);
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
getUserDetails(loginResult);
}
@Override
public void onCancel() {
// App code
Log.v("onCancel", "onCancel");
}
@Override
public void onError(FacebookException exception) {
// App code
exception.printStackTrace();
Log.v("onError", "CANCEL");
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
callbackManager.onActivityResult(requestCode, resultCode, data);
} catch (Exception e) {
e.printStackTrace();
}
}
protected void getUserDetails(LoginResult loginResult) {
GraphRequest data_request = GraphRequest.newMeRequest(
AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject json_object, GraphResponse response) {
try {
Intent returnIntent = new Intent();
returnIntent.putExtra("userProfile", json_object.toString());
setResult(RESULT_OK, returnIntent);
// LoginManager.getInstance().logOut();
finish();
} catch (Exception e) {
e.printStackTrace();
}
}
});
try {
Bundle permission_param = new Bundle();
permission_param.putString("fields", "id,name,email,picture.width(120).height(120)");
data_request.setParameters(permission_param);
data_request.executeAsync();
} catch (Exception e) {
e.printStackTrace();
}
}
protected void onResume() {
super.onResume();
// Logs 'install' and 'app activate' App Events.
AppEventsLogger.activateApp(this);
}
@Override
protected void onPause() {
super.onPause();
// Logs 'app deactivate' App Event.
AppEventsLogger.deactivateApp(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
//LoginManager.getInstance().logOut();
}
}
终于我找到了解决方案,我从头开始进行另一项活动,然后慢慢地复制了新活动,直到它与即将发生的活动相匹配为止。 简而言之,除了Android Manifest之外,这与Activity无关。
在我的Android清单中,我的LoginActivity上有android:noHistory =“ true”,这使我的应用程序崩溃了。 一旦我删除它,然后它又可以工作了。
<activity
android:name=".Activity.General.LoginActivity"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
请尝试从FBHelper.java中删除onActivityResult方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.