2017-07-12 12 views
12

मैं जो मेरे फेसबुक लॉग इन गतिविधि वर्ग कॉल AccessToken.getCurrentAccessToken() रिक्त है मेरा मुख्य गतिविधि में कुछ कोड है:फेसबुक पहुंच टोकन हमेशा अशक्त

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.widget.Toast; 

import com.facebook.AccessToken; 
import com.facebook.AccessTokenTracker; 
import com.facebook.CallbackManager; 
import com.facebook.FacebookCallback; 
import com.facebook.FacebookException; 
import com.facebook.Profile; 
import com.facebook.ProfileTracker; 
import com.facebook.login.LoginManager; 
import com.facebook.login.LoginResult; 

import java.util.Arrays; 

import matthewboyle.lurker_android.MainFeedScreen; 
import matthewboyle.lurker_android.utilities.ConnectionChecker; 

/** 
* Created by matthewboyle on 28/05/2017. 
*/ 

public class FacebookLogin extends AppCompatActivity { 
    private CallbackManager mCallbackManager; 
    private AccessTokenTracker accessTokenTracker; 
    private ProfileTracker profileTracker; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     mCallbackManager = CallbackManager.Factory.create(); 
     accessTokenTracker = new AccessTokenTracker() { 
      @Override 
      protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) { 
       Log.d("facebook", "onCurrentAccessTokenChanged"); 


      } 
     }; 
     profileTracker = new ProfileTracker() { 
      @Override 
      protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) { 
       Log.d("facebook", "onCurrentProfileChanged"); 

      } 
     }; 
     accessTokenTracker.startTracking(); 
     profileTracker.startTracking(); 

     LoginManager.getInstance().registerCallback(mCallbackManager, 
       new FacebookCallback<LoginResult>() { 
        @Override 
        public void onSuccess(LoginResult loginResult) { 
         Log.d("facebook", "in on success"); 
         AccessToken accessToken = loginResult.getAccessToken(); 
         Log.d("permissions", accessToken.getPermissions().toString()); 

         Log.d("facebook", "in on success,got a token and its "+accessToken); 

        } 

        @Override 
        public void onCancel() { 
         Log.d("facebook", "in cancel"); 

        } 

        @Override 
        public void onError(FacebookException exception) { 
         Log.d("facebook", "in error"); 
         Log.d("facebook", exception.toString()); 




        } 


       }); 
     LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_posts","user_likes","user_about_me","user_managed_groups","user_tagged_places")); 
     Log.d("facebook", "Done so redirecting with "+AccessToken.getCurrentAccessToken()); 

     startActivity(new Intent(FacebookLogin.this,MainFeedScreen.class)); 


    } 
    @Override 
    protected void onActivityResult(int requestCode, int responseCode, Intent intent) { 
     super.onActivityResult(requestCode, responseCode, intent); 
     //Facebook login 
     mCallbackManager.onActivityResult(requestCode, responseCode, intent); 

    } 
} 

अगर मैं इस कोड को चलाने के लिए, केवल प्रिंट बयान मैं प्राप्त करें:

Done so redirecting with null 

यह वर्ग में किसी अन्य विधि को मारने जैसा प्रतीत नहीं होता है।

यह उल्लेखनीय है कि इस कोड ने ठीक से काम किया जब तक कि मैंने ऐप को पुनर्स्थापित नहीं किया। मैं फेसबुक पर गया और मेरे ऐप में हैश कुंजी अपडेट की लेकिन यह मदद नहीं कर सका। हालांकि, मुझे हैश कुंजी के कारण कोई त्रुटि नहीं दिखाई दे रही है।

किसी भी मदद की सराहना करेंगे।

+0

ड्यूरा अंदर "startActivity" लाइन बढ़ने की जरूरत है सही है। आपको 'स्टार्टएक्टिविटी (नया इरादा (फेसबुक लोगिन.थिस, मेनफिडस्क्रीन.क्लास)) को हटा देना होगा, या इसे' एसयूसीईसी 'पर इंडेक्स करना होगा। – Codus

उत्तर

7

आप इस तरह अपने "onSuccess" कॉलबैक अंदर "startActivity" लाइन स्थानांतरित करने की आवश्यकता:

LoginManager.getInstance().registerCallback(mCallbackManager, 
      new FacebookCallback<LoginResult>() { 
       @Override 
       public void onSuccess(LoginResult loginResult) { 
        Log.d("facebook", "in on success"); 
        AccessToken accessToken = loginResult.getAccessToken(); 
        Log.d("permissions", accessToken.getPermissions().toString()); 

        Log.d("facebook", "in on success,got a token and its "+accessToken); 

        Log.d("facebook", "Done so redirecting with "+AccessToken.getCurrentAccessToken()); 

        startActivity(new Intent(FacebookLogin.this,MainFeedScreen.class)); 

       } 

       @Override 
       public void onCancel() { 
        Log.d("facebook", "in cancel"); 

       } 

       @Override 
       public void onError(FacebookException exception) { 
        Log.d("facebook", "in error"); 
        Log.d("facebook", exception.toString()); 




       } 


      }); 
1

मैं Fb SDK 4.1 उपयोग कर रहा हूँ और इस कोड स्निपेट मेरे लिए काम कर रहा है:

और @Duda के रूप में उल्लेख आप अपने "onSuccess" कॉलबैक

@Override 
public void onSuccess(LoginResult loginResult) { 

    AccessToken accessToken = loginResult.getAccessToken(); 

    Log.d("facebook", "Done so redirecting with "+accessToken.getToken()); 

    startActivity(new Intent(FacebookLogin.this,MainFeedScreen.class)); 

} 
संबंधित मुद्दे