Facebook登录失败,安装Facebook应用程序 [英] Facebook login fails with facebook app installed
问题描述
我是新来的Android的发展。我下载的Facebook SDK 3.0.1,并使用示例code登录。但问题是,如果安装Facebook应用程序的认证失败。
(否则它工作得很好)
$ P $在按钮pssing日志后,我得到的状态CLOSED_LOGIN_FAILED到的onActivityResult。
我当然不输入密码,它是通过Facebook的应用程序自动完成,而Facebook的应用程序是登录并正常工作。
我无法找到一个解决办法..
请大家帮我:)
这是我的code:
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
例如=这一点;
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
buttonLoginToFacebook =(按钮)findViewById(R.id.buttonLoginToFacebook);
tvWellcome =(的TextView)findViewById(R.id.tvWellcome); Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS); 会话的会话= Session.getActiveSession();
如果(会话== NULL){
如果(savedInstanceState!= NULL){
会话= Session.restoreSession(这一点,空,statusCallback,
savedInstanceState);
}
如果(会话== NULL){
会话=新的Session(本);
}
Session.setActiveSession(会话);
如果(session.getState()。等于(SessionState.CREATED_TOKEN_LOADED)){
session.openForRead(新Session.OpenRequest(本)
.setCallback(statusCallback));
}
} 更新视图();
}@覆盖
公共无效调用onStart(){
super.onStart();
。Session.getActiveSession()的addCallback(statusCallback);
}@覆盖
公共无效的onStop(){
super.onStop();
。Session.getActiveSession()removeCallback(statusCallback);
}@覆盖
公共无效的onActivityResult(INT申请code,INT结果code,意图数据){
super.onActivityResult(要求code,结果code,数据);
Session.getActiveSession()的onActivityResult(这一点,要求code,
结果code,数据);
更新视图();
}@覆盖
保护无效的onSaveInstanceState(捆绑outState){
super.onSaveInstanceState(outState);
会话的会话= Session.getActiveSession();
Session.saveSession(会话,outState);
}私人无效的UpdateView(){
会话的会话= Session.getActiveSession();
如果(session.isOpened()){
意向意图=新意图(这一点,ScreenStartPage.class);
startActivity(意向);
}其他{
buttonLoginToFacebook.setOnClickListener(新OnClickListener(){
公共无效的onClick(查看视图){
onClickLogin();
}
});
}
}私人无效onClickLogin(){
会话的会话= Session.getActiveSession();
如果(session.isOpened()及!&放大器;!session.isClosed()){
session.openForRead(新Session.OpenRequest(本)
.setCallback(statusCallback));
更新视图();
}其他{
Session.openActiveSession(这一点,真的,statusCallback);
}
}
公共无效onClickLogout(){
会话的会话= Session.getActiveSession();
如果(!session.isClosed()){
session.closeAndClearTokenInformation();
}
}私有类SessionStatusCallback实现Session.StatusCallback {
@覆盖
公共无效呼叫(会话的会话,SessionState会的状态,
例外的例外){
更新视图();
}
}
你有没有设置在Facebook上的应用程序设置dashbaord调试密钥散列和完整的类名称?见步骤5和6的入门的Facebook SDK为Android 文档。
I'm new to android development. I've downloaded facebook sdk 3.0.1, and using the sample code to log in. The problem is, that if facebook app is installed the authentication fails. (otherwise it works just fine) after pressing the log in button I get to onActivityResult with status CLOSED_LOGIN_FAILED. of course I'm not typing the password, it's done automatically through facebook's app, and the facebook app is logged in and works properly. I couldn't find a solution.. please help me :)
this is my code:
@Override
protected void onCreate(Bundle savedInstanceState) {
instance = this;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonLoginToFacebook = (Button) findViewById(R.id.buttonLoginToFacebook);
tvWellcome = (TextView) findViewById(R.id.tvWellcome);
Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
Session session = Session.getActiveSession();
if (session == null) {
if (savedInstanceState != null) {
session = Session.restoreSession(this, null, statusCallback,
savedInstanceState);
}
if (session == null) {
session = new Session(this);
}
Session.setActiveSession(session);
if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
session.openForRead(new Session.OpenRequest(this)
.setCallback(statusCallback));
}
}
updateView();
}
@Override
public void onStart() {
super.onStart();
Session.getActiveSession().addCallback(statusCallback);
}
@Override
public void onStop() {
super.onStop();
Session.getActiveSession().removeCallback(statusCallback);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
updateView();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Session session = Session.getActiveSession();
Session.saveSession(session, outState);
}
private void updateView() {
Session session = Session.getActiveSession();
if (session.isOpened()) {
Intent intent = new Intent(this, ScreenStartPage.class);
startActivity(intent);
} else {
buttonLoginToFacebook.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
onClickLogin();
}
});
}
}
private void onClickLogin() {
Session session = Session.getActiveSession();
if (!session.isOpened() && !session.isClosed()) {
session.openForRead(new Session.OpenRequest(this)
.setCallback(statusCallback));
updateView();
} else {
Session.openActiveSession(this, true, statusCallback);
}
}
public void onClickLogout() {
Session session = Session.getActiveSession();
if (!session.isClosed()) {
session.closeAndClearTokenInformation();
}
}
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state,
Exception exception) {
updateView();
}
}
Have you setup your debug key hash and full class name on Facebook's app settings dashbaord? see steps 5 and 6 in the Getting Started with the Facebook SDK for Android doc.
这篇关于Facebook登录失败,安装Facebook应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!