Note that there are some explanatory texts on larger screens.

plurals
  1. POFB sdk, requestNewPublishPermissions() doesn't call any callback
    primarykey
    data
    text
    <p>I followed the <a href="https://developers.facebook.com/docs/android/publish-to-feed/" rel="nofollow">FB tutorial</a> step by step, and I can't figure out why is this not working.</p> <p>All my fragments inherits from the <strong>BaseFragment</strong> :</p> <pre><code>public class BaseFragment extends SherlockFragment { ... protected UiLifecycleHelper _uiHelper; protected boolean _isResumed = false; protected static final List&lt;String&gt; PERMISSIONS = Arrays.asList("publish_actions"); protected static final String PENDING_PUBLISH_KEY = "pendingPublishReauthorization"; protected boolean _pendingPublishReauthorization = false; protected Session.StatusCallback _callback = new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { onSessionStateChange(session, state, exception); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); _uiHelper = new UiLifecycleHelper(getSherlockActivity(), _callback); _uiHelper.onCreate(savedInstanceState); } protected void onSessionStateChange(Session session, SessionState state, Exception exception) {} ...(all lifecycle stuff) } </code></pre> <p>Then I have a <strong>FacebookLoginFragment</strong> which contains the login/logout button :</p> <pre><code>public class FacebookLoginFragment extends BaseFragment { protected LoginButton _authButton; protected ProgressBar _loadingBar; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.facebook_login, container, false); _loadingBar = (ProgressBar) view.findViewById(R.id.login_progressBar); _authButton = (LoginButton) view.findViewById(R.id.authFacebookButton); _authButton.setFragment(this); _authButton.setReadPermissions(Arrays.asList("email", "user_birthday")); return view; } @Override protected void onSessionStateChange(Session session, SessionState state, Exception exception) { super.onSessionStateChange(session, state, exception); // LogIn process } ... } </code></pre> <p>And finally I've a <strong>NewsFragment</strong> which contains a listView of feeds. Each feed is sharable. When we click on the share button of a feed, the adapter call the <em>NewsFragment.publishFeed(feed)</em> method.</p> <pre><code>public class NewsFragment extends BaseFragment{ ... protected Feed _feedPendingPublish; @Override // =&gt; NEVER CALLED protected void onSessionStateChange(Session session, SessionState state, Exception exception) { super.onSessionStateChange(session, state, exception); if (_isResumed) { if (_pendingPublishReauthorization &amp;&amp; state.equals(SessionState.OPENED_TOKEN_UPDATED)) { _pendingPublishReauthorization = false; if(_feedPendingPublish != null){ publishFeed(_feedPendingPublish); _feedPendingPublish = null; } } } } public void publishFeed(Feed feed){ if(_pendingPublishReauthorization){ return; } Session session = Session.getActiveSession(); if (session != null){ // If permission doesn't exist, ask and return. Otherwise, send request List&lt;String&gt; permissions = session.getPermissions(); if (!isSubsetOf(PERMISSIONS, permissions)) { _pendingPublishReauthorization = true; _feedPendingPublish = feed; Session.NewPermissionsRequest newPermissionsRequest = new Session .NewPermissionsRequest(getSherlockActivity(), PERMISSIONS); session.requestNewPublishPermissions(newPermissionsRequest); return; } // DO stuff } } } </code></pre> <p>The problem is that the NewsFragment callback is not called after the publish authorization. (neither the BaseFragment, neither the FacebookLogin). Note that both fragments exist in the same activity.</p> <p>I'm using facebook-android-sdk-3.5.2</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload