Android:通过自定义应用程序中的facebook登录验证用户

Android:通过自定义应用程序中的facebook登录验证用户,android,facebook,facebook-login,facebook-authentication,android-facebook,Android,Facebook,Facebook Login,Facebook Authentication,Android Facebook,我正在开发一个我想通过facebook登录的应用程序。我所做的是: 在启动屏幕之后是一个登录屏幕,上面有用户名和密码编辑文本。在点击face book登录按钮输入凭证后,用户应在后台从face book进行身份验证。如果用户已通过身份验证,则他将直接进行下一个活动,否则将弹出toast消息 我在.java中编写了以下代码: public class LoginScreenActivity extends Activity { /** Global Variable Declaration. */

我正在开发一个我想通过facebook登录的应用程序。我所做的是:

在启动屏幕之后是一个登录屏幕,上面有用户名和密码编辑文本。在点击face book登录按钮输入凭证后,用户应在后台从face book进行身份验证。如果用户已通过身份验证,则他将直接进行下一个活动,否则将弹出toast消息

我在.java中编写了以下代码:

public class LoginScreenActivity extends Activity {
/** Global Variable Declaration. */
int nextMoveFlage = 0;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login_layout);
            // start Facebook Login
    Session.openActiveSession(this, true, new Session.StatusCallback() {
        // callback when session changes state
        @Override
        public void call(Session session, SessionState state,Exception exception) {
            if (session.isOpened()) {
                // make request to the /me API
                Request.executeMeRequestAsync(session,new Request.GraphUserCallback() {
                    // callback after Graph API response with user object
                    @Override
                    public void onCompleted(GraphUser user,Response response) {
                        if (user != null) {
                            TextView welcome = (TextView) findViewById(R.id.textview_hello);
                            welcome.setText("Hello "+ user.getName() + "!");
                            //Intent intent = new Intent(LoginScreenActivity.this,NextScreen.class);
                            //startActivity(intent);
                        }
                    }
                });
            }
        }
    });
}

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Session.getActiveSession().onActivityResult(this, requestCode,resultCode, data);
    }
}
我还在face book控制台中创建了应用程序,并添加了所有信息,如密钥哈希、包名等,并将该应用程序id复制到我的String.XML文件中

在应用程序id的清单文件中添加了元数据

问题是:

  • 我无法在登录后继续下一个活动,如如何移动或在何处编写意图代码

  • 是否需要face应用程序(SDK)来运行我的应用程序。如果任何人没有facebook SDK,那么解决方案是什么

  • 有时我会收到一个错误,因为远程应用程序id与存储的id不匹配,但我从Facebook控制台本身复制了应用程序id

  • 请就我的问题向我提供指导,并提出宝贵的建议

  • 您应该将启动下一个活动的意图放在会话状态回调(在if(session.isOpened())检查中,您当前正在执行一个“me”请求

  • SDK是运行您的应用程序所必需的,但不是Facebook应用程序。SDK包含(并捆绑)在您的apk中,Facebook应用程序是一个单独的apk,登录Facebook时不需要SDK

  • 如果出现该错误,则意味着您的设置中没有正确的密钥哈希。您是否使用其他密钥库进行签名


  • 谢谢你的建议。