首次使用Facebook登录登录应用程序,将重定向到应用程序注册页面?

首次使用Facebook登录登录应用程序,将重定向到应用程序注册页面?

问题描述:

当用户第一次登录到我的应用程序与facebook登录按钮, 我希望它重定向到FB用户的应用程序注册/注册活动(key-in username/password等),当他们再次用FB登录, 应用程序将检查服务器是否存在FB用户Acc? &跳过FB的注册活动,并重定向到主着陆页活动,首次使用Facebook登录登录应用程序,将重定向到应用程序注册页面?

我的问题在这里是我的代码来检查DB如果FB用户已经注册或不是?

是在:

onActivityResult(int requestCode, int resultCode, Intent data) {}? 

我知道的意图做回数据,但不知道如何访问它,因为我不知道额外的按键名称...或者是有另一种方式为拿到它,为实现它?

我已经

我目前正在使用Facebook登录按钮,检查了Facebook的dev的页面,但我迷茫和不已了解它这个

有人可以提供我的代码将如何看起来像一个简单的结构?

UPDATE: 下面是我的FacebookCallback<LoginResult>()样子:

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()功能:

private void facebookCheckEmail(String email) { 



    fbCheckEmail_params = new HashMap<String, String>(); 
    fbCheckEmail_params.put("Email", email); 

    final GsonRequest<FbCheckObject> gsonRequest = ApiRequest.gsonFacebookCheckEmailRequest 
      (
        new Response.Listener<FbCheckObject>() { 
         @Override 
         public void onResponse(FbCheckObject fbCheckObject) { 


          try { 

           System.out.println("Status = " + fbCheckObject.getStatus()); 

           if (new String(fbCheckObject.getStatus()).equals("ok") == true) { 

            fbresponse = "ok"; 

           } else if(new String(fbCheckObject.getStatus()).equals("no") == true){ 

            fbresponse = "no"; 

           } 

          } catch (Exception e) { 

           Log.d("Web Service Error", e.getMessage()); 
           e.printStackTrace(); 
          } 
         } 
        } 
        , 
        new Response.ErrorListener() { 
         @Override 
         public void onErrorResponse(VolleyError error) { 
          // Deal with the error here 

         } 
        }, 
        fbCheckEmail_params 
      ); 

    AppController.getInstance().addToRequestQueue(gsonRequest, TAG); 

} 

facebookCheckEmail是GSONRequest,需要一个email参数,将设置一个字符串变量fbresponseokno,我的问题是设置为fbresponse的值在facebookCheckEmail()不更新并获得null当我检查它在FacebookCallback<LoginResult>()

可以通过使用callbackmanager

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"); 
        } 
       }); 
完成