gpt4 book ai didi

android - 使用 Facebook-Android SDK 3.0 正确请求发布权限

转载 作者:行者123 更新时间:2023-11-29 00:27:34 26 4
gpt4 key购买 nike

我正在开发一种设置,用户可以选择将他们在我的应用中发布的帖子自动发布到 Facebook。

我找到了这个例子:https://github.com/fbsamples/android-3.0-howtos/blob/master/PublishFeedHowTo/src/com/facebook/samples/publishfeedhowto/MainFragment.java

但是,由于此功能是我应用程序中的一项设置,我需要将“允许许可”逻辑与发生在另一个单独 Activity 上的实际“发出发布请求”分开。

乍一看,我以为我可以将下面的代码块剪切并粘贴到我的 Activity 中,并且假设我的用户已经使用 facebook 登录,它就可以工作,但显然我还必须实现 uihelpers 和 Session.StatusCallback's 。我需要在请求权限的设置 Activity 中实现哪些额外代码(下面的逻辑除外)?

    private void publishStory() {
Session session = Session.getActiveSession();
if (session != null) {

// Check for publish permissions
List<String> permissions = session.getPermissions();
if (!isSubsetOf(PERMISSIONS, permissions)) {
pendingPublishReauthorization = true;
Session.NewPermissionsRequest newPermissionsRequest = new Session
.NewPermissionsRequest(this, PERMISSIONS);
session.requestNewPublishPermissions(newPermissionsRequest);
return;
}

}
}

private boolean isSubsetOf(Collection<String> subset, Collection<String> superset) {
for (String string : subset) {
if (!superset.contains(string)) {
return false;
}
}
return true;
}

}

最佳答案

正如 Ming Li 在评论中指出的那样,您不需要实现 uihelpers 但您还需要以下内容。

实现StatusCallback

private Session.StatusCallback statusCallback = new SessionStatusCallback();

private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(final Session session, SessionState state, Exception exception) {
if (session.isOpened()) {
switch (state) {
case OPENED_TOKEN_UPDATED:
publishStory(); // Comes here after the new permissions are requested
break;
}
}
}
}

实现onActivityResult()

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}

publishStory() 中添加代码以完成实际工作

private void publishStory() {
Session session = Session.getActiveSession();
if (session != null) {

// Check for publish permissions
List<String> permissions = session.getPermissions();
if (!isSubsetOf(PERMISSIONS, permissions)) {
pendingPublishReauthorization = true;
Session.NewPermissionsRequest newPermissionsRequest = new Session
.NewPermissionsRequest(this, PERMISSIONS);
session.requestNewPublishPermissions(newPermissionsRequest);
return;
}

// Do the real work here
...
}
}

关于android - 使用 Facebook-Android SDK 3.0 正确请求发布权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18248893/

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