2016-07-24 3 views
2

저는 사용자의 현재 데이터 (10 분 전 등 어디에 있었는지)를 감지하기 위해 neura sdk으로 작업하고 있습니다.이 Neura로 안드로이드 프로젝트를 빌드 할 때 오류가 발생합니다.

API에 로그인하고 내 사용자를 인증하고 싶습니다. 그러나 NeuraApiClient.authenticate (...)를 호출하면 아무 일도 일어나지 않습니다.

나는 여전히 neura documentations을 따른다.

public class MainActivity extends AppCompatActivity { 

    private ArrayList<Permission> mPermissions; 
    private AuthenticationRequest mAuthenticateRequest; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Builder builder = new Builder(this); 
     NeuraApiClient neuraApiClient = builder.build();  
     neuraApiClient.setAppUid(getResources().getString(R.string.app_uid));   
     neuraApiClient.setAppSecret(getResources().getString(R.string.app_secret)); 
     neuraApiClient.connect();  

     fetchPermissions(neuraApiClient); 
     neuraApiClient.authenticate(100, mAuthenticateRequest); 
    } 

    private void fetchPermissions(final NeuraApiClient client) { 
     client.getAppPermissions(new GetPermissionsRequestCallbacks() { 
      @Override 
      public void onSuccess(final List<Permission> permissions) throws RemoteException { 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         mPermissions = new ArrayList<>(permissions); 
         mAuthenticateRequest = new AuthenticationRequest(); 
         mAuthenticateRequest.setAppId(client.getAppUid()); 
         mAuthenticateRequest.setAppSecret(client.getAppSecret()); 
         mAuthenticateRequest.setPermissions(mPermissions); 
        } 
       }); 
      } 

      @Override 
      public void onFailure(Bundle resultData, int errorCode) throws RemoteException { 
      } 

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

답변

2

getAppPermissions는 비동기 호출이며, 데이터는 GetPermissionsRequestCallbacks에 페치 :

여기 내 코드입니다. GetPermissionsRequestCallbacks에서 authenticate 메소드를 사용하는 mAuthenticateRequest를 시작합니다. 당신이 mAuthenticateRequest = 널 (null) 인증, 당신은 GetPermissionsRequestCallbacks의 전까지는 onSuccess가 호출 기다려야하고 가져올 수 mAuthenticateRequest 대기하지 않는 경우에만 다음, 기본적으로

neuraApiClient.authenticate(100, mAuthenticateRequest); 

를 호출 할 수 있습니다 의미 및 neuraApiClient .authenticate (..)가 실패합니다.

당신이 뭔가를 할 수 있습니다 결과가 수신 될 때 인증 전화 -

private void fetchPermissions(final NeuraApiClient client) { 
     client.getAppPermissions(new GetPermissionsRequestCallbacks() { 
      @Override 
      public void onSuccess(final List<Permission> permissions) throws RemoteException { 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         mPermissions = new ArrayList<>(permissions); 
         mAuthenticateRequest = new AuthenticationRequest(); 
         mAuthenticateRequest.setAppId(client.getAppUid()); 
         mAuthenticateRequest.setAppSecret(client.getAppSecret()); 
         mAuthenticateRequest.setPermissions(mPermissions); 

         client.authenticate(100, mAuthenticateRequest); 
        } 
       }); 
      } 
      ... 
     }); 
    } 
관련 문제