身份验证上下文错误意图未解决
Authentication Context error intent is not resolved
我正在尝试使用示例代码 here 对 Azure Active Directory 的 android 应用程序进行身份验证,以验证用户并最终获得对 Office 365 托管 Sharepoint 列表的访问权限。但是每次我尝试这样做时,我都会得到 com.microsoft.aad.adal.AuthenticationException
: Activity is not resolved。验证清单文件中的 activity 名称。
是否有明显的地方我做错了,或者有什么东西是我完全遗漏的?
这是我的 onCreate
方法代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dud);
AuthenticationCallback < AuthenticationResult > callback = new AuthenticationCallback < AuthenticationResult > () {
@
Override
public void onSuccess(AuthenticationResult result) {
// TODO Auto-generated method stub
Log.d("Authentication Callback", "onSuccess");
Toast.makeText(getApplicationContext(), "Success",
Toast.LENGTH_SHORT).show();
}
@
Override
public void onError(Exception exc) {
// TODO Auto-generated method stub
exc.printStackTrace();
Log.d("Authentication Callback", "onError");
Toast.makeText(getApplicationContext(), "Error",
Toast.LENGTH_SHORT).show();
}
};
try {
ctx = new AuthenticationContext(DudActivity.this,
"https://login.windows.net/mydomain.onmicrosoft.com", true);
ctx.acquireToken(DudActivity.this, resource, clientId, redirectUri,
PromptBehavior.Auto, callback);
} catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这是日志
03-13 13:08:10.025: E/AuthenticationContext(8980):
DEVELOPER_ACTIVITY_IS_NOT_RESOLVED:2015-03-13
12:08:10-99d5c2bb-f33a-4a47-8f16-b111e528617c-Intent is not resolved
ver:1.1.1 03-13 13:08:10.091: W/System.err(8980):
com.microsoft.aad.adal.AuthenticationException: Activity is not
resolved. Verify the activity name in your manifest file 03-13
13:08:10.092: W/System.err(8980): at
com.microsoft.aad.adal.AuthenticationContext.localFlow(AuthenticationContext.java:1274)
03-13 13:08:10.092: W/System.err(8980): at
com.microsoft.aad.adal.AuthenticationContext.acquireTokenAfterValidation(AuthenticationContext.java:1217)
03-13 13:08:10.092: W/System.err(8980): at
com.microsoft.aad.adal.AuthenticationContext.acquireTokenLocalCall(AuthenticationContext.java:1119)
03-13 13:08:10.092: W/System.err(8980): at
com.microsoft.aad.adal.AuthenticationContext.access(AuthenticationContext.java:1082)
03-13 13:08:10.092: W/System.err(8980): at
com.microsoft.aad.adal.AuthenticationContext.call(AuthenticationContext.java:1068)
03-13 13:08:10.092: W/System.err(8980): at
com.microsoft.aad.adal.AuthenticationContext.call(AuthenticationContext.java:1)
03-13 13:08:10.092: W/System.err(8980): at
java.util.concurrent.FutureTask.run(FutureTask.java:237) 03-13
13:08:10.092: W/System.err(8980): at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
03-13 13:08:10.092: W/System.err(8980): at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
03-13 13:08:10.092: W/System.err(8980): at
java.lang.Thread.run(Thread.java:818) 03-13 13:08:10.092:
D/Authentication Callback(8980): onError
错误实际上是要求您将 activity 放入您的清单文件中。您可以在 https://github.com/AzureAD/azure-activedirectory-library-for-android/blob/master/README.md
查看详情
您的清单中需要 activity:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:debuggable="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.microsoft.aad.adal.AuthenticationActivity"
android:label="@string/title_login_hello_app" >
</activity>
....
<application/>
您还需要实现onActivityResult,以便adal完成对结果的处理。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (mContext != null) {
mContext.onActivityResult(requestCode, resultCode, data);
}
}
我正在尝试使用示例代码 here 对 Azure Active Directory 的 android 应用程序进行身份验证,以验证用户并最终获得对 Office 365 托管 Sharepoint 列表的访问权限。但是每次我尝试这样做时,我都会得到 com.microsoft.aad.adal.AuthenticationException
: Activity is not resolved。验证清单文件中的 activity 名称。
是否有明显的地方我做错了,或者有什么东西是我完全遗漏的?
这是我的 onCreate
方法代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dud);
AuthenticationCallback < AuthenticationResult > callback = new AuthenticationCallback < AuthenticationResult > () {
@
Override
public void onSuccess(AuthenticationResult result) {
// TODO Auto-generated method stub
Log.d("Authentication Callback", "onSuccess");
Toast.makeText(getApplicationContext(), "Success",
Toast.LENGTH_SHORT).show();
}
@
Override
public void onError(Exception exc) {
// TODO Auto-generated method stub
exc.printStackTrace();
Log.d("Authentication Callback", "onError");
Toast.makeText(getApplicationContext(), "Error",
Toast.LENGTH_SHORT).show();
}
};
try {
ctx = new AuthenticationContext(DudActivity.this,
"https://login.windows.net/mydomain.onmicrosoft.com", true);
ctx.acquireToken(DudActivity.this, resource, clientId, redirectUri,
PromptBehavior.Auto, callback);
} catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这是日志
03-13 13:08:10.025: E/AuthenticationContext(8980): DEVELOPER_ACTIVITY_IS_NOT_RESOLVED:2015-03-13 12:08:10-99d5c2bb-f33a-4a47-8f16-b111e528617c-Intent is not resolved ver:1.1.1 03-13 13:08:10.091: W/System.err(8980): com.microsoft.aad.adal.AuthenticationException: Activity is not resolved. Verify the activity name in your manifest file 03-13 13:08:10.092: W/System.err(8980): at com.microsoft.aad.adal.AuthenticationContext.localFlow(AuthenticationContext.java:1274) 03-13 13:08:10.092: W/System.err(8980): at com.microsoft.aad.adal.AuthenticationContext.acquireTokenAfterValidation(AuthenticationContext.java:1217) 03-13 13:08:10.092: W/System.err(8980): at com.microsoft.aad.adal.AuthenticationContext.acquireTokenLocalCall(AuthenticationContext.java:1119) 03-13 13:08:10.092: W/System.err(8980): at com.microsoft.aad.adal.AuthenticationContext.access(AuthenticationContext.java:1082) 03-13 13:08:10.092: W/System.err(8980): at com.microsoft.aad.adal.AuthenticationContext.call(AuthenticationContext.java:1068) 03-13 13:08:10.092: W/System.err(8980): at com.microsoft.aad.adal.AuthenticationContext.call(AuthenticationContext.java:1) 03-13 13:08:10.092: W/System.err(8980): at java.util.concurrent.FutureTask.run(FutureTask.java:237) 03-13 13:08:10.092: W/System.err(8980): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 03-13 13:08:10.092: W/System.err(8980): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 03-13 13:08:10.092: W/System.err(8980): at java.lang.Thread.run(Thread.java:818) 03-13 13:08:10.092: D/Authentication Callback(8980): onError
错误实际上是要求您将 activity 放入您的清单文件中。您可以在 https://github.com/AzureAD/azure-activedirectory-library-for-android/blob/master/README.md
查看详情您的清单中需要 activity:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:debuggable="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.microsoft.aad.adal.AuthenticationActivity"
android:label="@string/title_login_hello_app" >
</activity>
....
<application/>
您还需要实现onActivityResult,以便adal完成对结果的处理。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (mContext != null) {
mContext.onActivityResult(requestCode, resultCode, data);
}
}