Sto seguendo il tutorial di condivisione Android di facebook su facebook (https://developers.facebook.com/docs/android/share). L'app funziona bene e posso accedere con facebook e fare clic sul pulsante di condivisione demo. Quindi questa è la procedura della mia app:Facebook SDK 3.8: autorizzazione publish_actions non restituita
- Accedi con Facebook
- L'oggetto sessione facebook viene aggiornato e le seguenti autorizzazioni vengono salvate all'interno dell'oggetto sessione:
user_likes, user_friends, user_status, basic_info
- Ora, voglio condividere qualcosa. Pertanto l'utente fa clic su un pulsante di condivisione e di una richiesta di autorizzazione ulteriore chiamata
publish_actions
è fatto
Il seguente codice esegue questa richiesta:
public class MainActivity extends Activity {
private Button shareButton;
private UiLifecycleHelper uiHelper;
private static final List<String> PERMISSIONS = Arrays.asList("publish_actions");
private static final String PENDING_PUBLISH_KEY = "pendingPublishReauthorization";
private boolean pendingPublishReauthorization = false;
...
private void publishStory() {
Session session = Session.getActiveSession();
if(session != null) {
List<String> permissions = session.getPermissions();
if(!isSubsetOf(PERMISSIONS, permissions)) {
pendingPublishReauthorization = true;
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, PERMISSIONS);
//Request the new permission here. The answer is processed in onSessionStateChange() method
session.requestNewPublishPermissions(newPermissionsRequest);
return;
}
...
private void onSessionStateChange(Session session, SessionState state, Exception exception) {
//since the session is already open we enter this if branch
if (state.isOpened()) {
shareButton.setVisibility(View.VISIBLE);
//The result of state.equals(SessionState.OPENED_TOKEN_UPDATED) is false which indicates that the session object has not been updated (as far as I understand the fb api)
Log.e(TAG, "state.equals(SessionState.OPENED_TOKEN_UPDATED) = " + state.equals(SessionState.OPENED_TOKEN_UPDATED));
//Output all the current permission the session has (publish_actions is not included here)
List<String> permissions = session.getPermissions();
Iterator<String> it = permissions.iterator();
Log.e(TAG, "Content of list:");
while(it.hasNext())
Log.e(TAG, "permission = " + it.next());
//Since the OPENED_TOKEN_UPDATED has not been updated nothing further happens here
if (pendingPublishReauthorization && state.equals(SessionState.OPENED_TOKEN_UPDATED)) {
pendingPublishReauthorization = false;
publishStory();
}
} else if (state.isClosed()) {
shareButton.setVisibility(View.INVISIBLE);
}
}
Così, anche se questo sembra essere corretto ci deve essere qualche errore rimanente. Il permesso publish_actions non è concesso, ma non capisco perché. Solo le autorizzazioni esistenti rimangono publish_actions
.
Ulteriore osservazione: ho letto alcune domande che dicono che dovrebbe apparire un ulteriore popup che chiede all'utente di concedere l'autorizzazione. Comunque questo non succede nel mio caso. Forse questo è il problema? In tal caso, cosa devo fare per ottenere la finestra popup?
AGGIORNAMENTO: Ho anche provato il seguente esempio di github: https://gist.github.com/vishalpawale/5556996 Questo codice di esempio non funziona a causa dello stesso motivo. Non ottiene alcun permesso di pubblicazione_action. Sembra essere un bug reale nell'SDK di Facebook?
Non sono sicuro, ma ora sto cercando di risolvere questo problema. Apparentemente Facebook ha ritirato la possibilità di pubblicare post tramite l'API. Hai trovato qualche soluzione? – Wordica
Ho seguito developers.facebook.com/docs/android/share l'esempio per postare su un muro di utenti. Funziona bene se accedo a Facebook utilizzando l'email dello sviluppatore dell'app. Con i non sviluppatori, non ottengo i permessi ... Succede lo stesso per te? –
stesso problema, autorizzazione publish_action non concessa. –