Android 首次使用facebook登录应用程序时,是否会重定向到应用程序注册页面?
当用户首次使用facebook登录按钮登录到我的应用程序时, 我希望它将他们重定向到FB用户的应用注册/注册活动(Android 首次使用facebook登录应用程序时,是否会重定向到应用程序注册页面?,android,facebook,facebook-graph-api,android-intent,facebook-login,Android,Facebook,Facebook Graph Api,Android Intent,Facebook Login,当用户首次使用facebook登录按钮登录到我的应用程序时, 我希望它将他们重定向到FB用户的应用注册/注册活动(输入用户名/密码等),下次他们再次使用FB登录时, 应用程序将检查服务器是否存在FB用户Acc?&跳过FB的注册活动并重定向到主登录页活动 我的问题是,如果FB用户已经注册或没有注册,我应该将代码放在哪里检查DB 是在: onActivityResult(int requestCode, int resultCode, Intent data) {}? 我知道返回数据的意图,但不知
输入用户名/密码
等),下次他们再次使用FB登录时,
应用程序将检查服务器是否存在FB用户Acc?&跳过FB的注册活动并重定向到主登录页活动
我的问题是,如果FB用户已经注册或没有注册,我应该将代码放在哪里检查DB
是在:
onActivityResult(int requestCode, int resultCode, Intent data) {}?
我知道返回数据的意图,但不知道如何访问它,因为我不知道额外密钥的名称…或者有其他方法获取它吗
我已经查看了facebook开发页面,但是我很困惑,不理解它
我目前正在使用facebook登录按钮进行此操作
有人能给我一个简单的代码结构吗
更新:
下面是我的FacebookCallback()
的样子:
private FacebookCallback<LoginResult> mCallBack = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
progressDialog.dismiss();
// App code
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
Log.e("response: ", response + "");
try {
//=================================================================//
// Create User Code
System.out.println("FB successful login");
user = new User();
//user.facebookID = object.getString("id").toString();
user.userID = object.getString("id").toString();
user.email = object.getString("email").toString();
user.name = object.getString("name").toString();
user.gender = object.getString("gender").toString();
PrefUtils.setCurrentUser(user, MainLoginActivity.this);
//STOP, if NOT Registered
//Function to check if email exist in DB
facebookCheckEmail(user.email);
if(fbresponse.equals("ok")) {
//=================================================================//
// Start MainActivity Code
Intent intent=new Intent(MainLoginActivity.this, MainActivity.class);
startActivity(intent);
Toast.makeText(MainLoginActivity.this, "Welcome " + user.name, Toast.LENGTH_LONG).show();
finish();
} else if(fbresponse.equals("no")){
//=================================================================//
// Pop up Dialog to Register & goto FB Register Activity
AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
builder.setTitle("You Have Not Yet Registered");
builder.setMessage("You have not yet registered using Facebook, register now?");
builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Goto FB Register Activity
dialog.dismiss();
}
});
builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Do nothing
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
}
//=================================================================//
// Start MainActivity Code
//Intent intent=new Intent(MainLoginActivity.this, MainActivity.class);
//startActivity(intent);
//Toast.makeText(MainLoginActivity.this, "Welcome " + user.name, Toast.LENGTH_LONG).show();
//finish();
}catch (Exception e){
e.printStackTrace();
System.out.println("FB failed login = " + e.toString());
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields","id,name,email,gender,birthday");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
progressDialog.dismiss();
}
@Override
public void onError(FacebookException e) {
progressDialog.dismiss();
System.out.println("Facebook error " + e.toString());
Toast.makeText(MainLoginActivity.this, "Something goes wrong.." + e.toString(), Toast.LENGTH_LONG).show();
}
};
facebookCheckEmail
是一个GSONRequest,它接受一个email
参数,并将字符串变量fbresponse
设置为ok
或no
,我的问题是facebookCheckEmail()中设置为fbresponse
的值
未更新,当我在FacebookCallback()中选中它时,可以使用callbackmanager获取null
LoginManager.getInstance().registerCallback(mCallbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.i("NIC", "Success Login");
//Call Graph API here to retrieve user's data
//Call to you Backend to check if user is registered, then do your stuff here
}
@Override
public void onCancel() {
Toast.makeText(General_login_menu.this, "Login Cancel", Toast.LENGTH_LONG).show();
Log.i("NIC", "Cancel Login");
}
@Override
public void onError(FacebookException exception) {
Toast.makeText(General_login_menu.this, exception.getMessage(), Toast.LENGTH_LONG).show();
Log.i("NIC", "Error Login");
}
});
LoginManager.getInstance().registerCallback(mCallbackManager,
新建FacebookCallback(){
@凌驾
成功时公共无效(LoginResult LoginResult){
Log.i(“NIC”,“成功登录”);
//调用图API来检索用户的数据
//打电话给后端,检查用户是否已注册,然后在此处执行操作
}
@凌驾
公开作废{
Toast.makeText(常规登录菜单。此“登录取消”,Toast.LENGTH.show();
Log.i(“NIC”,“取消登录”);
}
@凌驾
public void onError(facebook异常){
Toast.makeText(General\u login\u menu.this,exception.getMessage(),Toast.LENGTH\u LONG.show();
Log.i(“NIC”,“错误登录”);
}
});
LoginManager.getInstance().registerCallback(mCallbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.i("NIC", "Success Login");
//Call Graph API here to retrieve user's data
//Call to you Backend to check if user is registered, then do your stuff here
}
@Override
public void onCancel() {
Toast.makeText(General_login_menu.this, "Login Cancel", Toast.LENGTH_LONG).show();
Log.i("NIC", "Cancel Login");
}
@Override
public void onError(FacebookException exception) {
Toast.makeText(General_login_menu.this, exception.getMessage(), Toast.LENGTH_LONG).show();
Log.i("NIC", "Error Login");
}
});