Liferay-OAuth 1.2.1

Liferay-OAuth 1.2.1

测试已测试
语言语言 Obj-CObjective C
许可证 自定义
发布最后发布2016年3月

Bruno Farache维护。



  • Bruno Farache

Liferay iOS SDK OAuth 库

设置

要在 Liferay 门户中启用 OAuth 身份验证,必须安装 OAuth 提供者插件。此插件目前仅适用于 EE 客户。

阅读其文档 以生成您应用程序的消费者密钥和密钥,它们将由移动 SDK 用于签名请求,我们将在本文件中引用它们。

此库是 Mobile SDK 的 CocoaPods subspec。您安装 Mobile SDK 作为依赖项后,此库将可用。请参阅移动 SDK 文档了解如何将其作为依赖项包含到项目中。

使用

创建一个传递 LROAuth 实例的 LRSession 实例

LROAuth *auth = [[LROAuth alloc] initWithConsumerKey:consumerKey
    consumerSecret:consumerSecret token:token tokenSecret:tokenSecret];
LRSession *session = [[LRSession alloc]
    initWithServer:@"https://:8080" authentication:auth];

LRGroupService_v62 *service = [[LRGroupService_v62 alloc]
    initWithSession:session];

NSArray *sites = [service getUserSites:&error];

如您所见,您需要将 consumerKeyconsumerSecret 传递给 LROAuth 构造函数。这些参数与您的应用程序相关联,如前所述,必须由OAuth 提供者插件生成。

tokentokenSecret 是 OAuth 1.0a 协议所需的令牌。它们用于在用户授予您的应用程序权限后识别用户。为了获取它们,用户需要通过 OAuth 流程进行身份验证,也就是说,您的应用程序必须打开一个显示门户登录页面 Web 浏览器,并且用户需要登录并授予您的应用程序权限。

您可以自己实现这部分,使用任何可用的 iOS OAuth 1.0a 库。或者,我们提供了用于获取 tokentokenSecret 的辅助类。请参阅下面的部分。

外部浏览器

以下步骤说明为使用外部浏览器进行验证所需的步骤。非常重要,您需要阅读并运行示例应用程序

这将在用户的移动浏览器中打开,与在应用程序内部发生身份验证流相反。

从您的 ViewController 开始,您必须通过传递 OAuthConfig 实例作为意图获取 OAuthActivity

OAuthConfig config = new OAuthConfig(server, consumerKey, consumerSecret);
Intent intent = new Intent(this, OAuthActivity.class);
intent.putExtra(OAuthActivity.EXTRA_OAUTH_CONFIG, config);
startActivityForResult(intent, 1);

如果一切顺利,外部网页浏览器将会打开Liferay的登录页面,并请求用户的凭据。

一旦用户成功验证并赋予了您的应用程序权限,您的Activity中的onActivityResult方法将被调用。同样,如果用户没有授予权限或出了一些问题,onActivityResult也会被调用

@Override
    public void onActivityResult(int request, int result, Intent intent) {
        if (result == RESULT_OK) {
            OAuthConfig config = (OAuthConfig)intent.getSerializableExtra(
                OAuthActivity.EXTRA_OAUTH_CONFIG);

            String consumerKey = config.getConsumerKey();
            String consumerSecret = config.getConsumerSecret();
            String token = config.getToken();
            String tokenSecret = config.getTokenSecret();

            // Create an OAuth instance with these values and pass to
            // the SessionImpl constructor
        }
        else if (result == RESULT_CANCELED) {
            Exception exception = (Exception)intent.getSerializableExtra(
                OAuthActivity.EXTRA_EXCEPTION);

            exception.printStackTrace();
        }
    }

检查result参数以查看是否验证成功。如果成功,从intent中获取OAuthConfig附加信息,它提供了SessionImpl验证Liferay远程服务所需的全部4个值。阅读上面的使用部分,了解如何使用这些值与Mobile SDK的服务一起使用。

如果失败,intent将包含具有错误原因的Exception附加信息。