我正在尝试在没有登录按钮的情况下获取 facebook 访问令牌。我正在使用 facebook sdk 4.4.0。
这是我的代码:
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();
}
在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" />
当我尝试进行身份验证并运行 logInWithReadPermissions 时,会显示一个进度对话框,然后消失,没有任何反应(没有进入 facebookCallback)。