Get Read and Publish Permissions in one request

依然范特西╮ 提交于 2019-11-26 23:14:18

问题


Before you all say it's not possible, open up the Spotify app and hit the signin with Facebook button.

I'm wondering how they did it, and how I can get "publish_stream" and basic permissions/email in one request.

Also, is it possible for me to reopen a Facebook session using the Facebook SDK if I have certain info from the last session (last time they used the app)?

EDIT -SCREENSHOTS BELOW FOR THE MUSICALLY AVERT


回答1:


What ever you saw on Spotify is not the outcome of publish_stream .What they have used is the Open Graph

Open graph concepts involves integrating actions of the app with the FB activity post and share with the users through the application they use. Read more about it at the above mentioned link.


Edits Explanation: Check the Open Graph Permissions

Sample Activity:

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

This activity will show this (if the user is not logged in):




回答2:


In my app I have created an instance for OpenRequest and I have set permissions for it.

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

It may be useful to you.




回答3:


I just set it separately in the onCreate Method.

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



回答4:


Go to your application dashboard. then click edit app. now in left side of the page u will see Permission. click it. a new page will come. find out User & Friend Permissions: box. here type publish_actions. now save.

now from your android app you can post story to facebook by login just once. i mean, just login using LoginButton,and try to post something. it should work.

let me know what happen.




回答5:


For anyone that is wondering about the second part of my question:

To reopen a Facebook session using the Facebook SDK use this code

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

Facebook caches the token.



来源:https://stackoverflow.com/questions/15143951/get-read-and-publish-permissions-in-one-request

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!