在Phonegap中登录Drupal站点

时间:2011-10-13 08:56:59

标签: drupal drupal-6 cordova drupal-7

我正在尝试允许我的用户从他们的移动应用程序登录到Drupal站点,以便检索他们的一些个人资料信息。谁知道怎么做?我在网站上有服务模块,它已经为新闻提供了一些JSON文件。

2 个答案:

答案 0 :(得分:5)

使用Drupal 6或7的Services 3.x模块,您需要通过UI创建端点,例如:

  • 姓名:my_services
  • 端点标题:我的服务
  • 服务器:REST
  • 端点路径:my_services_path

然后为新创建的端点启用以下资源:

  • 用户 - >登录

如果您的移动应用程序是基于HTML5和JS的,那么您可以使用Ajax,例如在PhoneGap中使用jQueryMobile,您可以创建一个这样的登录页面来加载您的自定义JS文件:

<div data-role="page" id="page_login">

  <script type="text/javascript" charset="utf-8" src="my_app_login.js"></script>

  <div data-role="header">
    <h1>Login</h1>
  </div><!-- /header -->

  <div data-role="content" class='content'>
    <div>
      <label for="page_login_name">Username</label>
      <input type="text" id="page_login_name" />
    </div>
    <div>
      <label for="page_login_pass">Password</label>
      <input type="password" id="page_login_pass" />
    </div>
    <fieldset>
      <div><button type="button" data-theme="b" id="page_login_submit">Login</button></div>
    </fieldset>
  </div><!-- /content -->

</div><!-- /page -->

然后,当您单击应用程序的登录按钮时,此实现将使用您的应用程序代码进入my_app_login.js:

$('#page_login_submit').on('click',function(){

  // grab form input
  var name = $('#page_login_name').val();
  if (!name) { alert('Please enter your user name.'); return false; }
  var pass = $('#page_login_pass').val();
  if (!pass) { alert('Please enter your password.'); return false; }

  // make the services call
  var data_string = 'username=' + encodeURIComponent(name);
  data_string += '&password=' + encodeURIComponent(pass);
  $.ajax({
      url: "http://example.com/?q=my_services_path/user/login.json",
      type: 'post',
      data: data_string,
      dataType: 'json',
      error: function(XMLHttpRequest, textStatus, errorThrown) {
        alert('page_login_submit - failed to login');
        console.log(JSON.stringify(XMLHttpRequest));
        console.log(JSON.stringify(textStatus));
        console.log(JSON.stringify(errorThrown));
      },
      success: function (data) {
        alert('You are now logged in!');
      }
  });
  return false;
});

无论您使用何种平台开发移动应用程序,对服务用户登录资源的调用都是相同的。

我在这里有一个坚实的PhoneGap和Drupal示例:

http://tylerfrankenstein.com/code/android-app-with-drupal-7-services-phonegap-and-jquery-mobile

或者,我制作了一个模块,为通过PhoneGap和Services 3.x与Drupal 6或7站点进行通信提供了一个可靠的框架,它被称为DrupalGap:

答案 1 :(得分:0)

有一个Drupal Phonegap模块,允许Android应用在Drupal网站上登录,发布和查看文章。我建议您查看模块的源代码和Android应用程序作为应用程序的参考。

模块:http://drupal.org/project/phonegap

Android应用来源:http://code.google.com/p/drupal-phonegap/

这里还有一个如何执行此操作的示例:http://www.tylerfrankenstein.com/user/4/code/drupal-json-services-examples-phonegap-jquery-mobile-android

如果您正在开发iPhone应用,请查看此帖:http://www.jefflinwood.com/2011/10/easier-drupal-plugin-for-phonegap-ios-installation/