0

socialengine サイトからライブ フィードを読み取るシンプルな Android アプリを作成しようとしています。

  • ユーザーを認証する
  • 通知を読む
  • メッセージを読む
  • 表示の更新

使用できる特別な API はありますか

質問が明確でない場合は申し訳ありません

4

5 に答える 5

3

すべてのアクティビティ フィード データは、データベースの engine4_activity* テーブルにあります。申し訳ありませんが、サポート スタッフには現時点で共有できる図やドキュメントがありません。当社のスタッフは、当社のサポート サービス (http://support.socialengine.com/questions/152/SocialEngine-Requirements) の範囲外であるため、通常はカスタマイズの支援を提供しません。Authorization と Activity の使用方法について簡単に説明しますが、SocialEngine のコードを確認して、より詳細な情報を推測する必要があります。注意として、SocialEngine のドキュメントをコンパイルしていませんが、開発者はコード全体で PHPDocumentor スタイルの構文を使用しており、Neatbeans (http://netbeans.org/) などの IDE を使用してその情報にすばやくアクセスできます。

認可

SocialEngine には、アクション コントローラー内でのクエリ承認に使用されるいくつかのコントローラー アクション ヘルパー クラスがあります。

  • アプリケーション/モジュール/承認/コントローラー/アクション/ヘルパー/RequireAuth.php
  • アプリケーション/モジュール/コア/コントローラー/アクション/ヘルパー/RequireAbstract.php
  • アプリケーション/モジュール/コア/コントローラー/アクション/ヘルパー/RequireAdmin.php
  • アプリケーション/モジュール/コア/コントローラー/アクション/ヘルパー/RequireSubject.php
  • アプリケーション/モジュール/コア/コントローラー/アクション/ヘルパー/RequireUser.php

ほとんどの場合、あなたが気にする唯一のものは次のとおりです。

  • アプリケーション/モジュール/承認/コントローラー/アクション/ヘルパー/RequireAuth.php
  • アプリケーション/モジュール/コア/コントローラー/アクション/ヘルパー/RequireSubject.php
  • アプリケーション/モジュール/コア/コントローラー/アクション/ヘルパー/RequireUser.php

これらのヘルパーの使用方法の良い例は、Album_AlbumController クラスにあります: application/modules/Album/controllers/AlbumController.php

public function init()
{
if( !$this->_helper->requireAuth()->setAuthParams('album', null, 'view')->isValid() ) return;

if( 0 !== ($photo_id = (int) $this->_getParam('photo_id')) &&
null !== ($photo = Engine_Api::_()->getItem('album_photo', $photo_id)) )
{
Engine_Api::_()->core()->setSubject($photo);
}

else if( 0 !== ($album_id = (int) $this->_getParam('album_id')) &&
null !== ($album = Engine_Api::_()->getItem('album', $album_id)) )
{
Engine_Api::_()->core()->setSubject($album);
}
}

public function editAction()
{
if( !$this->_helper->requireUser()->isValid() ) return;
if( !$this->_helper->requireSubject('album')->isValid() ) return;
if( !$this->_helper->requireAuth()->setAuthParams(null, null, 'edit')->isValid() ) return;

init 関数のコードは、ページにアクセスするための要件を設定するだけで、editAction 関数内で認証データに対してチェックが実行されます。requireSubject および requireUser ヘルパーは非常に単純です。

  1. requireSubject は、上記の例では init 関数で行われるページの件名が設定されていることを期待しています
  2. requireUser は、閲覧者がログインしているユーザーであるかどうかを確認します

requireAuth ヘルパーは少し単純ではありません。簡潔にするために、抽象的な内部構造のほとんどを省略します。最後に、ヘルパーは Authorization_Api_Core::isAllowed 関数を指します: application/modules/Authorization/Core/Api.php

/**
* Gets the specified permission for the context
*
* @param Core_Model_Item_Abstract|string $resource The resource type or object that is being accessed
* @param Core_Model_Item_Abstract $role The item (user) performing the action
* @param string $action The name of the action being performed
* @return mixed 0/1 for allowed, or data for settings
*/
public function isAllowed($resource, $role, $action = 'view')

関数が期待する $resource および $role オブジェクトは、SocialEngine 内でモデルと呼ばれる Zend_Db_Table_Row のインスタンスであり、モジュールのモデル ディレクトリに配置されることが期待されます。isAllowed 関数が呼び出されると、認証 API はデータベースに対して engine4_authorization_allow、engine4_authorization_levels、および engine4_authorization_permissions テーブルに対してクエリを実行します。

  1. engine4_authorization_levels テーブルには、SocialEngine によってすぐに作成されるメンバー レベルと、管理パネルの [管理] > [メンバー レベル] セクションから作成されるカスタム メンバー レベルが含まれます。
  2. engine4_authorization_permissions テーブルには、メンバー レベルの設定など、デフォルトおよび管理者が指定した権限処理がすべて含まれています。
  3. engine4_authorization_allow には、個々のオブジェクトの許可データが含まれています。たとえば、フォト アルバムを表示できるユーザーに関する情報がそこに配置されます。engine4_authorization_allow.role_id (モデルのアイテム ID にマップ) が engine4_authorization_allow.resource_id (モデルのアイテム ID にマップ) にアクセスできるかどうかは、0 から 5 の数字を含む engine4_authorization_allow.value 列によって決まります。

アプリケーション/モジュール/承認/Api/Core.php

class Authorization_Api_Core extends Core_Api_Abstract
{
/**
* Constants
*/
const LEVEL_DISALLOW = 0;
const LEVEL_ALLOW = 1;
const LEVEL_MODERATE = 2;
const LEVEL_NONBOOLEAN = 3;
const LEVEL_IGNORE = 4;
const LEVEL_SERIALIZED = 5;

0) リンクされたリソースへのアクセスは許可されていません。これは許可テーブルに存在しない行と同じです

1)リンクされたリソースへのアクセスも許可されています

2) リソースへのアクセスとモデレートが許可されている (例: スーパー管理者、管理者、モデレーター メンバー レベル)

3-5) 許可されていないため、無視されます。これらは、承認を適切に処理するために、いくつかのカスタム ロジックを想定しています。

アクティビティフィード

アクティビティ フィードへの投稿は、実際には非常に簡単です。多かれ少なかれ、単一の関数呼び出しです。

$api = Engine_Api::_()->getDbtable('actions', 'activity');
$api->addActivity($subject, $object, $action_type, $body, $params);

上記の例の最初の行は、SocialEngines Engine_Api クラスを使用して、Activity_Model_DbTable_Actions クラス (application/modules/Activity/Model/DbTable/Actions.php) をロードします。2 行目は、アクティビティ フィード アイテムが実際に作成されるアクションです。

  1. $subject と $object は、Core_Model_Item_Abstract (SocialEngine モデル) のインスタンスである必要があります。
  2. $action_type は、engine4_activity_actiontypes テーブルのアクションです
  3. $body は、データベースの engine4_activity_actions.body 列に格納されます。これは、アクティビティの実際のメッセージです。たとえば、ユーザーが新しいプロフィール写真を追加すると、body 列は次のように設定されます。

    {item:$subject} added a new profile photo

    アクティビティのコンテンツが組み立てられると、{item:$subject} はユーザーの表示名に置き換えられます

  4. $params はシリアライズされ、engine4_activity_actions.params 列に格納されます。params 列のデータは、アクティビティの説明を組み立てるときに渡されます。

    アプリケーション/モジュール/アクティビティ/モデル/Action.php

    class Activity_Model_Action extends Core_Model_Item_Abstract
    {
    ...
    public function getContent()
    {
    $model = Engine_Api::_()->getApi('core', 'activity');
    $params = array_merge(
    $this->toArray(),
    (array) $this->params,
    array(
    'subject' => $this->getSubject(),
    'object' => $this->getObject()
    )
    );
    //$content = $model->assemble($this->body, $params);
    $content = $model->assemble($this->getTypeInfo()->body, $params);
    return $content;
    }
    
于 2012-09-07T17:56:43.503 に答える
1

socialengine には REST API が組み込まれていないため、独自に作成するか、サードパーティの socialengine ベンダーに API を依頼する必要があります。

于 2015-01-15T04:14:51.423 に答える
1

データベースからアクセスできる場合は、それに接続してデータを取得するだけです。ただし、API を介して行った方がよいでしょう。

于 2012-05-23T10:46:46.087 に答える