gpt4 book ai didi

java - Android Facebook SDK,请求发布权限 "manage_pages"未更新 session 权限列表

转载 作者:行者123 更新时间:2023-11-29 08:48:49 25 4
gpt4 key购买 nike

我在 Android 上使用 Parse 和 Facebook SDK。在链接 facebook 帐户后,我正在尝试请求权限“manage_pages”。但是每当我发出请求时,它都不会添加到 Session.getPermissions() 中的权限列表中。但是,会出现要求“manage_pages”权限的 Facebook 对话框弹出窗口,它列在 facebook.com 上我的 Facebook 应用程序设置中。

在主 Activity 中:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.e(TAG, "Receiving activity result with requestCode: " + requestCode + " resultcode: " + resultCode);
if (requestCode == 32665) // Code for when facebook is NOT linked
ParseFacebookUtils.finishAuthentication(requestCode, resultCode,
data);
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}

在 FacebookFragment 的 onCreateView() 中:

        connectBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (user == null) {
Log.d(TAG, "User is null.");
return;
}
if (!ParseFacebookUtils.isLinked(user)) {
ParseFacebookUtils.link(user,
FacebookFragment.this.getActivity(),
new SaveCallback() {
@Override
public void done(ParseException ex) {
if (ParseFacebookUtils.isLinked(user)) {
Log.d(TAG,
"Woohoo, user logged in with Facebook!");
user.add(ParseConstants.USER_ARRAY_NETWORKS, ParseConstants.NETWORK_CODE_FACEBOOK);
user.saveInBackground();

Session session = Session.getActiveSession();
// Check for publish permissions
List<String> permissions = session.getPermissions();
if (!permissions
.contains(Permissions.Page.MANAGE_PAGES)) {
Log.e(TAG, "We don't have hte permission: " + Permissions.Page.MANAGE_PAGES + "... we have " + Arrays.toString(permissions.toArray()));
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(
getActivity(),
"manage_pages");
newPermissionsRequest.setRequestCode(23232);
newPermissionsRequest.setCallback(new StatusCallback() {

@Override
public void call(
Session session,
SessionState state,
Exception exception) {
List<String> permissions = session.getPermissions();

Log.e(TAG, "CALLBACK Permissions: " + Arrays.toString(permissions.toArray()));
if (exception != null)
Log.e(TAG, "EXCEPTION: " + exception.getMessage());
}

});
session.requestNewPublishPermissions(newPermissionsRequest);
// ParseFacebookUtils.saveLatestSessionData(ParseUser.getCurrentUser());
}

showMessages();
} else {
Log.e(TAG, "Uhh user is not linked");
}
}
});
} else
Log.e(TAG, "User is already linked!");
}
});

FacebookFragment 的 onStart:

@Override
public void onStart() {
super.onStart();
if (ParseFacebookUtils.isLinked(user)) {
showMessages();


Session session = ParseFacebookUtils.getSession();
// Check for publish permissions
List<String> permissions = session.getPermissions();

Log.e(TAG, "Permissions: " + Arrays.toString(permissions.toArray()));
Log.e(TAG, "Permissions: " + Arrays.toString(Session.getActiveSession().getPermissions().toArray()));

}
}

这是出现在 logCat 中的内容:

05-20 15:55:53.077: E/FacebookFragment(1887): We don't have hte permission: manage_pages... we have [public_profile]
05-20 15:55:53.337: E/FacebookFragment(1887): CALLBACK Permissions: []
05-20 15:55:54.228: E/MainActivity(1887): Receiving activity result with requestCode: 23232 resultcode: -1
05-20 15:55:54.228: E/FacebookFragment(1887): Permissions: [public_profile]
05-20 15:55:54.228: E/FacebookFragment(1887): Permissions: [public_profile]

最佳答案

我和你有同样的问题,不幸的是 Sessions.getPermissions() 非常无用,你必须在应用程序中注销并再次登录才能更新 session 对象。我什么都试过了。

我最终做的是完全放弃 session.getPermissions() 并只向 /me/permissions Graph API 在线发出请求。

这是唯一可靠的工作方式,无需登录/注销。

关于java - Android Facebook SDK,请求发布权限 "manage_pages"未更新 session 权限列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23768997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com