2016-09-23 15 views
7

私はモバイルからのダイナミクスcrmログインを処理するためにMicrosoft aad:adal4jを使用しています。実装後、私は以下の例外を取得しています。Android Microsoft Dynamics CRM adal4jログイン問題

私は間違っていますか?

エラー

java.lang.NoSuchMethodError: No static method encodeBase64URLSafeString([B)Ljava/lang/String; in class Lorg/apache/commons/codec/binary/Base64; or its super classes (declaration of 'org.apache.commons.codec.binary.Base64' appears in /system/framework/org.apache.http.legacy.boot.jar) 
java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError: No static method encodeBase64URLSafeString([B)Ljava/lang/String; in class Lorg/apache/commons/codec/binary/Base64; or its super classes (declaration of 'org.apache.commons.codec.binary.Base64' appears in /system/framework/org.apache.http.legacy.boot.jar) 
at java.util.concurrent.FutureTask.report(FutureTask.java:94) 
at java.util.concurrent.FutureTask.get(FutureTask.java:164) 
at com.sampleadal.MainActivity.onCreate(MainActivity.java:33) 
at android.app.Activity.performCreate(Activity.java:6237) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
at android.app.ActivityThread.-wrap11(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5417) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by: java.lang.NoSuchMethodError: No static method encodeBase64URLSafeString([B)Ljava/lang/String; in class Lorg/apache/commons/codec/binary/Base64; or its super classes (declaration of 'org.apache.commons.codec.binary.Base64' appears in /system/framework/org.apache.http.legacy.boot.jar) 
at com.microsoft.aad.adal4j.AuthenticationContext.computeSha256Hash(AuthenticationContext.java:798) 
at com.microsoft.aad.adal4j.AuthenticationContext.logResult(AuthenticationContext.java:775) 
at com.microsoft.aad.adal4j.AuthenticationContext.access$200(AuthenticationContext.java:61) 
at com.microsoft.aad.adal4j.AuthenticationContext$1.call(AuthenticationContext.java:130) 
at com.microsoft.aad.adal4j.AuthenticationContext$1.call(AuthenticationContext.java:117) 
at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
at java.lang.Thread.run(Thread.java:818) 

コード

AuthenticationResult result = (AuthenticationResult) new AuthenticationContext(Constants.AUTHORITY_URL, false, Executors.newFixedThreadPool(1)).acquireToken(Constants.SERVICE_URL, Constants.CLIENT_ID, "my_login_id", "my_password", null).get(); 
Log.d("TAG", "Access Token - " + result.getAccessToken() + " \n Refresh Token - " + result.getRefreshToken() + " \n ID Token - " + result.getAccessToken() + " \n User ID - " + result.getUserInfo().getUniqueId() + " \n Displayable ID - " + result.getUserInfo().getDispayableId()); 

のGradleファイル

compile 'com.microsoft.aad:adal4j:0.0.2' 

コード:すでに適切なソリューションを指摘@abhishesh

AuthenticationResult result = (AuthenticationResult) new AuthenticationContext(Constants.AUTHORITY_URL, false, Executors.newFixedThreadPool(1)).acquireToken(Constants.SERVICE_URL, new ClientCredential("my_login_id", "my_password"), null).get(); 

出力

{ 
    "error": "unauthorized_client", 
    "error_description": "AADSTS70001: Application with identifier 'prasanth' was not found in the directory windows.net\r\nTrace ID: 8c5ccd53-af99-4ff0-8556-501a53080d2f\r\nCorrelation ID: 8651e7f1-a7db-4673-aafb-52fef0d48d2d\r\nTimestamp: 2016-09-26 06:10:41Z" 
} 
+1

のリンクをご確認ください:http://stackoverflow.com/questions/9126567/method-not-found-using-digestutils-in-android/29833101#29833101 – abhishesh

+0

@abhishesh私はすでに –

+0

ことを試してみました@PrasanthSはあなた自身の名前を変更したApacheコモンズライブラリを含め、 'com.microsoft.aad:adal4j'のパッケージ名を変更しましたか? –

答えて

1

10もこれを試してみました。 Java用のadald4jライブラリは、Android用に設計されたものではなく、内部でAndroid用のものと異なるバージョンのApache共通ライブラリを使用しています。 私はfigo connect API(www.figo.io)を使用して同じ問題に遭遇しました。あなたがする必要がどのような

  1. はadald4jライブラリhttps://github.com/AzureAD/azure-activedirectory-library-for-java をダウンロードし、ローカルプロジェクトに追加します。

  2. apache commonsライブラリをダウンロードし、パッケージ名(「org.apache.commons.codec.android」など)の名前を変更します。たとえば、崇高なテキストで複数のファイルにまたがって検索と置換を使用します。 Apacheコモンズライブラリもローカルに追加します。

  3. ダウンロードしたadald4jライブラリのapache commonのすべてのパッケージ実装の名前を、指定した新しい名前に変更します。これは、ライブラリがあなたのApacheコモンズバージョンを使用し、アンドロイド内部バージョンを使用していないことを保証します。

関連する問題