2016-05-23 2 views
1

Ich arbeite mit Neura SDK, um besondere Ereignisse meiner Benutzer zu erkennen (ankommend/von zu Hause) Ich versuche, ihre zu initiieren Authentifizierung, wie unten beschrieben (fetchPermissions() und initNeuraConnection() die gleiche wie in den Dokumentationen sind und mAuthenticationRequest initiiert auf fetchPermissions())Nuera Authentifizierungsbildschirm ist nicht geöffnet, wenn ich neuraApiClient.authenticate (...)

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    getMainActivity().initNeuraConnection(); 
    fetchPermissions(); 
    getMainActivity().getClient().authenticate(NEURA_AUTHENTICATION_REQUEST_CODE, mAuthenticateRequest); 
} 

Mein Problem ist, dass wenn ich beglaubigen nennen - nichts passiert und die Der neura Anmeldebildschirm ist nicht geöffnet

Antwort

3

Es gibt einige Dinge, die Sie überprüfen können:

Haben Sie initNueraConnection() und fetchPermissions() wie in der Neura dev site beschrieben deklariert?

Wenn ja, vermute ich, dass Sie authenticate (...) eine nullable mAuthenticateRequest-Instanz senden. Da fetchPermissions() asynchron ist (ein Netzwerkaufruf), rufen Sie authenticate (...) auf, bevor die Ergebnisse von fetchPermissions() abgerufen werden. Daher ist mAuthenticateRequest null, da sie noch nicht initiiert wurde. Sie sollten authenticate (...) erst aufrufen, nachdem Sie die Daten von fetchPermissions() erhalten haben.

Zum Beispiel können Sie dies tun:

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    getMainActivity().initNeuraConnection(); 
    fetchPermissions(); 
} 
private void fetchPermissions() { 
    loadProgress(true); 
    getMainActivity().getClient().getAppPermissions(new GetPermissionsRequestCallbacks() { 
     @Override 
     public void onSuccess(final List<Permission> permissions) throws RemoteException { 
      if (getActivity() == null) 
       return; 
      getActivity().runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        loadProgress(false); 
        mPermissions = new ArrayList<>(permissions); 
        mAuthenticateRequest = new AuthenticationRequest(); 
        mAuthenticateRequest.setAppId(getMainActivity().getClient().getAppUid()); 
        mAuthenticateRequest.setAppSecret(getMainActivity().getClient().getAppSecret()); 
        mAuthenticateRequest.setPermissions(mPermissions); 

        getMainActivity().getClient().authenticate(NEURA_AUTHENTICATION_REQUEST_CODE, mAuthenticateRequest); 
       } 
      }); 
     } 

     @Override 
     public void onFailure(Bundle resultData, int errorCode) throws RemoteException { 
      loadProgress(false); 
      mRequestPermissions.setEnabled(true); 
     } 

     @Override 
     public IBinder asBinder() { 
      return null; 
     } 
    }); 
} 

Fyi, können Sie Ihre logcat für diesen Fehler überprüfen: authenticationRequest NULL sein kann, konnte nicht beglaubigen Anfrage erstellen.

+1

Sie haben Recht! Das war mein Fehler, und mit dem Aufruf zur Authentifizierung nach Erhalt der App-Berechtigungen funktionierte es. –

Verwandte Themen