2016-04-25 176 views
8

此代码运行良好当我卸载Facebook应用程序但未安装Facebook应用程序。我正在使用Facebook SDK 4.0。Android应用程序与Facebook登录未与Facebook应用程序安装

这是我的代码

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; 
} 

这对恢复和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(); 
    } 
} 
+0

我已经做到了这一点,我只是提供这个问题的质询问题,因此将有助于相互学习更多的东西 –

回答

0

你可以删除你的应用程序在你的Facebook应用程序。喜欢你可以打开Facebook应用程序去 设置>>账户设置>>应用程序>>你的应用程序>>删除。删除你的应用程序后,卸载你的应用程序。并重新安装它,并检查登录Facebook的工作与否。

0

请改变你的Facebook SDK版本,之后清理并重新构建应用程序,将工作

1

哪里是你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 

在您的代码如下

变化setContentView(...)后创建你callbackmanager;

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

记住,如果这是你的Facebook问题,那么你的问题在搜索其他的事情就在于这不浪费时间内。在Facebook的sdk的回调中也登录失败的方法。

发表评论,如果您仍然有问题

+0

将您callbackmanager在onCreate方法的setContentView后再试 – MobDev

+0

我试着这但注意到 –

+0

在您的fb开发人员帐户中检查manifest文件中的1.facbook应用程序ID 2.检查您的软件包名称和在fb dev帐户中提到的MainActivity是否正确3.检查您是否添加了基于调试或发布的正确哈希键keystore – MobDev

相关问题