studio integrar instalar con android_sdk_version android facebook facebook-android-sdk android-facebook

android - integrar - Obtenga permisos de lectura y publicación en una sola solicitud



integrar sdk facebook en android (5)

Acabo de configurarlo por separado en el método 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);

Antes de que todos digan que no es posible, abra la aplicación Spotify y presione el botón de inicio de sesión con Facebook.

Me pregunto cómo lo hicieron, y cómo puedo obtener "publish_stream" y permisos básicos / correo electrónico en una solicitud.

Además, ¿puedo volver a abrir una sesión de Facebook con el SDK de Facebook si tengo cierta información de la última sesión (la última vez que usaron la aplicación)?

EDITAR -HOTOS DE PANTALLA A CONTINUACIÓN PARA LOS MUSICALMENTE AVERTOS


En mi aplicación, he creado una instancia para OpenRequest y he establecido permisos para ella.

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

Puede ser útil para usted.


Para cualquiera que se esté preguntando acerca de la segunda parte de mi pregunta:

Para volver a abrir una sesión de Facebook utilizando el SDK de Facebook, use este código

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

Facebook guarda el token en caché.


Ve al panel de tu aplicación. luego haga clic en editar aplicación. ahora en el lado izquierdo de la página u verá Permission . Pinchalo. Vendrá una nueva página. averiguar los User & Friend Permissions: cuadro. Aquí escribe publish_actions . ahora guarda.

Ahora, desde su aplicación de Android, puede publicar una historia en Facebook con solo iniciar sesión una vez. LoginButton decir, solo inicie sesión con LoginButton e intente publicar algo. deberia de funcionar.

dejame saber que pasa


Lo que haya visto en Spotify no es el resultado de publish_stream . Lo que han utilizado es Open Graph

Los conceptos de gráficos abiertos implican la integración de acciones de la aplicación con la publicación de actividad de FB y compartir con los usuarios a través de la aplicación que usan. Lea más al respecto en el enlace mencionado anteriormente.

Ediciones Explicación : Verifique los permisos de Open Graph

Actividad de muestra:

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

Esta actividad mostrará esto (si el usuario no está conectado):