2017-05-17 9 views
0

私はFacebookの開発者のチュートリアルに従ってアプリにログインしました。FacebookのログインGraphRequestを保存して別のアクティビティに渡す

私はこのコードを使用しているし、それは完全に働いた:

public class MainActivity extends AppCompatActivity { 

    LoginButton loginButton; 
    TextView textView; 
    CallbackManager callbackManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FacebookSdk.sdkInitialize(getApplicationContext()); 
     setContentView(R.layout.activity_main); 
     loginButton=(LoginButton)findViewById(R.id.fb_login_bn); 
     textView=(TextView)findViewById(R.id.textView); 
     loginButton.setReadPermissions(Arrays.asList(
       "public_profile", "email", "user_birthday", "user_friends")); 
     callbackManager=CallbackManager.Factory.create(); 

     loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 


       // Facebook Email address 
       GraphRequest request = GraphRequest.newMeRequest(
         loginResult.getAccessToken(), 
         new GraphRequest.GraphJSONObjectCallback() { 
          @Override 
          public void onCompleted(
            JSONObject object, 
            GraphResponse response) { 
           Log.v("LoginActivity Response ", response.toString()); 

           try { 
            String Name = object.getString("name"); 

            String FEmail = object.getString("email"); 
            Log.v("Email = ", " " + FEmail); 
            Intent i = new Intent(MainActivity.this, Vote.class); 
            startActivity(i); 



           } catch (JSONException e) { 
            e.printStackTrace(); 
           } 
          } 
         }); 
       Bundle parameters = new Bundle(); 
       parameters.putString("fields", "id,name,email,gender, birthday"); 
       request.setParameters(parameters); 
       request.executeAsync(); 


      } 

      @Override 
      public void onCancel() { 

       textView.setText("Login cancelled"); 
      } 

      @Override 
      public void onError(FacebookException error) { 

      } 
     }); 

    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     callbackManager.onActivityResult(requestCode,resultCode,data); 
    } 

しかし、どのようにユーザーが二度目にトン記号をdoesnのように、私は、ユーザーのログインセッションを保存しますか?

また、ユーザーの名前とメールアドレスを別のアクティビティに渡すにはどうすればよいですか。

答えて

0

どのように私が使用して別の活動にごVoteクラスのget値で

使用intent.putExtra()

あなた MainActivityパスデータで

String Name = object.getString("name"); 
String FEmail = object.getString("email"); 
Log.v("Email = ", " " + FEmail); 
Intent i = new Intent(MainActivity.this, Vote.class); 
i.putExtra("name", Name); 
i.putExtra("email", FEmail); 
startActivity(i); 

を、ユーザーの名前とメールアドレスを渡します:

String name = getIntent().getStringExtra("name"); 
String email = getIntent().getStringExtra("email"); 

ユーザーが 二度目にトン記号をdoesnのように、どのように私は、ユーザーがすでにログインに成功した後

にかログインしているかどうかを確認するために使用SharedPreferences

ユーザログインセッションを保存しません sharedpreferencesに値を保存します。

public static final String MyPREFERENCES = "MyPrefs";        

SharedPreferences prefs = getSharedPreferences(MyPREFERENCES, MODE_PRIVATE); 

SharedPreferences.Editor editor = sharedpreferences.edit(); 
editor.putBoolean("logged_in", true); //save value 
editor.commit(); 

あなたはsharedpreferenceから値を盗んことができますユーザーが既にログインしているかどうかを確認し、必要な操作を実行します。

if (prefs.getBoolean("logged_in", false)) { 
     //user logged in before 
    } else { 
     //not logged in 
    } 
+0

ありがとう、私は今それを試してみます –

+0

回答が助けましたか?そうであれば正しいとマークすることができます.thankx – rafsanahmad007

+0

申し訳ありませんが、facebook SDKのアクセストークンを使用しています –

関連する問題