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).
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);
}