Android应用程序使用Facebook登录无法安装Facebook App

时间:2016-04-25 07:32:40

标签: java android sdk facebook-android-sdk facebook-sdk-4.0

当我卸载Facebook App 时,此代码运行良好,但未安装Facebook App。我正在使用Facebook SDK 4.0。

这是我的代码

package com.example.nhp04.gqfood;
import com.facebook.AccessToken;
import com.facebook.AccessTokenTracker;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.Profile;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;



public class Login extends AppCompatActivity implements Animation.AnimationListener {

private String info = "";
private LoginButton loginButton;
private CallbackManager callbackManager;
private AccessTokenTracker tracker;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        callbackManager = CallbackManager.Factory.create();
        setContentView(R.layout.activity_login);
loginButton = (LoginButton)findViewById(R.id.login_button);



loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            AccessToken accessToken = loginResult.getAccessToken();
            Profile profile = Profile.getCurrentProfile();
            info = ("User ID: " + 

    loginResult.getAccessToken().getUserId() + "\n" + "Auth Token: " + loginResult.getAccessToken().getToken());
                }

                @Override
                public void onCancel() {
                    info = ("Login attempt canceled.");
                }

                @Override
                public void onError(FacebookException e) {
                    info = ("Login attempt failed.");
                }
            });
            System.out.println(info);
            tracker = new AccessTokenTracker() {
            @Override
            protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {

            }
        };
        tracker.startTracking();
    }
    }

此功能可用于检查登录

public boolean isLoggedIn() {
    AccessToken accessToken = AccessToken.getCurrentAccessToken();
    return accessToken != null;
}

关于Resume和Stop方法

@Override
protected void onResume() {
    super.onResume();
    if (isLoggedIn()){
        Intent home = new Intent(this, home.class);
        startActivity(home);
    }
}

@Override
protected void onStop() {
    super.onStop();
    tracker.stopTracking();
    finish();
}

这是我的 onActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        Intent home = new Intent(this, home.class);
        startActivity(home);
    } else {
        Toast.makeText(getApplicationContext(), "Unable to login please check your internet connection",Toast.LENGTH_LONG).show();
    }
}

4 个答案:

答案 0 :(得分:2)

您的onActivityResult()代码在哪里。在onActivityResult()中,您需要使用callbackmanager。用户如下代码:

 @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);

}
上面的

将在片段/活动中起作用。确保你有

1. facebook app installed on your testing device
2. In facebook developer account check whether you have mentioned 
- correct package name : refer your android project manifestfile.xml

- check that have you mentioned correct launcher class
- Check that you have given correct debug/release hash key

3. Cross check your facebook application id and that mentioned in your manifestfile.xml facebook meta data are same

在您的代码中 改变

callbackmanager;

之后创建setContentView(...)

将其更改为以下     FacebookSdk.sdkInitialize(getApplicationContext()); AppEventsLogger.activateApp(this); setContentView(R.layout.activity_login); callbackManager = CallbackManager.Factory.create();

请记住,如果这是你的Facebook问题,那么你的问题就在于此,不要浪费时间去搜索其他东西。同时在facebook sdk的回调中输入登录失败方法。

如果您还有问题发表评论

答案 1 :(得分:0)

您可以在Facebook应用中删除您的应用。就像你可以在go中打开facebook app   设置&gt;&gt;帐户设置&gt;&gt; app&gt;&gt; youer App&gt;&gt;去掉 。删除你的应用程序后,它卸载你的应用程序。并重新安装它,并检查登录与Facebook工作与否。

答案 2 :(得分:0)

请在您清理并重建应用程序后更改您的facebook sdk版本

答案 3 :(得分:0)

如果收到如下错误消息: 错误

无效的密钥哈希。密钥哈希“ ... 5GAvm / gHi ...”与任何 存储的密钥哈希。在以下位置配置您的应用程序密钥哈希 https://developers.facebook.com/apps/...55.../

然后复制错误消息中提供的哈希密钥,并将其替换为旧密钥,然后使用设备上安装的Facebook应用再试一次