Search code examples
androidfacebookfacebook-sdk-4.x

Get Facebook access token without login in android


I am trying to get facebook access token without login button. I am using facebook sdk 4.4.0.

this is my code:

public void getImagesFromCloud(final CloudObject cloud){
    String socialName = cloud.getSocialName();

    switch (socialName) {
        case CloudUtills.NAME_FACEBOOK:
            FacebookSdk.sdkInitialize(mContext.getApplicationContext());
            CallbackManager callbackManager = CallbackManager.Factory.create();
            LoginManager.getInstance().registerCallback(callbackManager, facebookCallback);
            LoginManager.getInstance().logInWithReadPermissions((Activity) mContext, Arrays.asList("public_profile"));
        break;
}

FacebookCallback<LoginResult> facebookCallback = new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(LoginResult loginResult) {
        CloudUtills.TOKEN_FACEBOOK = loginResult.getAccessToken().getToken();
        HashMap<String,String> params = new HashMap<>();
        params.put(CloudUtills.NAME_FACEBOOK, CloudUtills.TOKEN_FACEBOOK);
        new CloudImportRequest(CloudUtills.NAME_FACEBOOK, params, CloudAdapter.this);
    }

    @Override
    public void onCancel() {
        Utility.d("facebook canceled");
    }

    @Override
    public void onError(FacebookException e) {
        Utility.e("facebook error: " + e.getLocalizedMessage());
    }
};

@Override
public void onResult(String response) {
    Utility.d("cloud import response: " + response);
}

@Override
public void onErrorResult(String err) {
    new MyToast(mContext, "Cannot import cloud", 2, Toast.LENGTH_LONG).show();
}

in menifest.xml:

<meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_key" />

<activity
        android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

When i am trying to authenticate, and running logInWithReadPermissions, a progress dialog is showing for a second and then disappear and nothing happens (not entering to facebookCallback).


Solution

  • Have you included this line in onActivityResult? Do you need it for managing the callback from facebook to your activity. Hope it helps!

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