2016-09-23 6 views
7

मैं माइक्रोसॉफ्ट एड का उपयोग कर रहा हूं: adal4j मोबाइल से डायनेमिक्स सीआरएम लॉगिन को संभालने के लिए। कार्यान्वयन के बाद मैं नीचे अपवाद प्राप्त कर रहा हूं।एंड्रॉइड माइक्रोसॉफ्ट डायनेमिक्स सीआरएम 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' 

और यह भी इस की कोशिश की:

कोड:

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 क्या आपने अपाचे कॉमन्स लाइब्रेरी का अपना नाम बदल दिया संस्करण और 'com.microsoft.aad: adal4j' में पैकेज नाम बदल दिए हैं? –

उत्तर

2

com.microsoft.aad/Adal Android एप्लिकेशन के लिए Azure सक्रिय निर्देशिका पुस्तकालय जबकि com.microsoft.azure/adal4j जावा वेब अनुप्रयोग के लिए Azure सक्रिय निर्देशिका पुस्तकालय है।

http://mvnrepository.com/artifact/com.microsoft.aad/adal/1.0.0http://mvnrepository.com/artifact/com.microsoft.azure/adal4j

1

@abhishesh पहले से ही सही समाधान की ओर इशारा किया। जावा के लिए adald4j लाइब्रेरी एंड्रॉइड के लिए डिज़ाइन नहीं की गई थी और एंड्रॉइड आंतरिक रूप से अपाचे के रूप में अपाचे कॉमन्स लाइब्रेरी का एक अलग संस्करण उपयोग करता है। मैं figo कनेक्ट API (www.figo.io) का उपयोग कर एक ही समस्या में भाग गया।

आप क्या करने की जरूरत:

  1. adald4j लाइब्रेरी https://github.com/AzureAD/azure-activedirectory-library-for-java डाउनलोड करें और अपने परियोजना के लिए स्थानीय स्तर पर यह जोड़ें।

  2. अपाचे कॉमन्स लाइब्रेरी डाउनलोड करें और इसके सभी पैकेज नामों का नाम बदलें (जैसे "org.apache.commons.codec.android")। उदाहरण के लिए खोज का उपयोग करें और उत्कृष्ट फ़ाइलों में एकाधिक फ़ाइलों में प्रतिस्थापित करें। स्थानीय रूप से अपाचे कॉमन्स लाइब्रेरी भी जोड़ें।

  3. अपने डाउनलोड किए गए adald4j लाइब्रेरी में आपके नए निर्दिष्ट नाम पर सामान्य अपाचे के सभी पैकेज कार्यान्वयन का नाम बदलें। यह सुनिश्चित करता है कि लाइब्रेरी आपके अपाचे कॉमन्स संस्करण का उपयोग करे, न कि एंड्रॉइड आंतरिक संस्करण।

संबंधित मुद्दे