获取阅读和发布权限在一个请求(Get Read and Publish Permissions in

2019-07-20 18:09发布

之前大家说这是不可能的,开拓的Spotify应用和打与Facebook按钮登录。

我不知道他们是怎么做的,以及我如何得到“publish_stream”和基本权限/电子邮件的一个请求。

此外,是否有可能对我来说,重新使用Facebook SDK一个Facebook会话,如果我有一个从上届会议的某些信息(他们使用的应用程序最后一次)?

编辑下面-SCREENSHOTS FOR THE音乐AVERT

Answer 1:

是什么都你在Spotify上看到的不是结果publish_stream 。什么他们使用的是开放图谱

Open Graph的概念涉及到整合应用程序的行为与FB活动帖,并通过他们使用的应用程序的用户分享。 了解更多关于它在上述链接。


编辑说明 : 检查的Open Graph权限

示例活动:

public class MainActivity extends Activity implements StatusCallback {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        OpenRequest open = new OpenRequest(this);
        open.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
        open.setPermissions(Arrays.asList(new String[]{"email", "publish_actions", "user_birthday", "user_hometown"}));
        open.setCallback(this);
        Session s = new Session(this);
        s.openForPublish(open);
    }

    @Override
    public void call(Session session, SessionState state, Exception exception) {
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(Session.getActiveSession()!=null)
            Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
    }
}

此活动将显示此(如果用户没有登录):



Answer 2:

在我的应用我已经创建了OpenRequest一个实例,我已经为它设置权限。

Session currentSession = Session.getActiveSession();
if (currentSession == null || currentSession.getState().isClosed()) 
{
    Session session = new Session.Builder(context).build();
    Session.setActiveSession(session);
    currentSession = session;
}

if (currentSession.isOpened()) 
{
    //Do whatever u want. User has logged in
}
else if(!currentSession.isOpened())
{
    //Ask for username and password
    OpenRequest op = new Session.OpenRequest(context);

    op.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
    op.setCallback(null);

    List<String> permissions = new ArrayList<String>();
    permissions.add("publish_stream");
    op.setPermissions(permissions);

    Session session = new Builder(InvitePartners.this).build();
    Session.setActiveSession(session);
    session.openForPublish(op);
}

这可能是对你有用。



Answer 3:

我只是在onCreate方法将其分开。

    LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
    authButton.setPublishPermissions("publish_actions");
    authButton.setFragment(this);
    Session.NewPermissionsRequest newPermissionsRequest = new 
            Session.NewPermissionsRequest(this, Arrays.asList("read_stream"));
    Session.getActiveSession().requestNewReadPermissions(newPermissionsRequest);


Answer 4:

转到您的应用程序仪表板。 然后点击编辑应用程序。 现在在页面的左侧U将看到Permission 。 点击它。 一个新的页面会来。 找出User & Friend Permissions:框。 在此输入publish_actions 。 现在保存。

现在从Android应用程序,你可以通过登录张贴的故事Facebook的一次​​。 我的意思是,只要登录使用LoginButton ,并尝试张贴的东西。 它应该工作。

让我知道发生什么事。



Answer 5:

对于任何人想知道关于我的问题的第二部分:

要使用Facebook SDK使用此代码重新打开一个Facebook会话

if(Session.openActiveSession(this) == null) { //Haven't logged in yet
    openSessionForRead(getString(R.string.app_id), Arrays.asList("email"));
}

Facebook的缓存令牌。



文章来源: Get Read and Publish Permissions in one request