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