1

ユーザーの署名なしで yammer グループにユーザーを作成し、偽装によってそれを達成したかったのです。

他のユーザーに代わって access_tokes を取得する [レスポンスで不正なヘッダーを取得する]: Fiddler を使用して GET 要求を開始し、他のユーザーに代わって次のパラメーターを使用してアクセス トークンを取得しています。

https://www.yammer.com/api/v1/oauth/tokens.json - 使用される URL

パラメータ user_id と consumer_key を使用...

ここに画像の説明を入力

私は常に無許可の例外を取得しています。この文脈で誰かが私を助けることができますか?アプリケーションを介して偽装し、yammer でユーザーを作成する方法を教えてください。

4

1 に答える 1

1

管理ユーザーの Oauth トークンを使用して、別のユーザーのトークンを検索できます。次に、そのユーザー トークンを使用して、グループ名を指定してグループに参加させます。これがPHPでの方法です...

$ymuser = yammer_user_by_email('myemail@test.com');
$ymuser_id = $ymuser->id;
$user_token = yammer_oath_token($ymuser_id);
$group = yammer_group_by_name('group_name_goes_here');
yammer_group_join($group->id,$user_token->token);

inc ファイル内のグローバル変数。これらはアプリの設定から取得され、最初に管理者アカウントを認証したときに取得されます。次の手順に従って、管理者アカウントのトークンを生成しますhttp://developer.yammer.com/authentication/#a-testtoken

$YAMMER_CLIENT_ID = "my_app_client_id";
$YAMMER_CLIENT_SECRET = "my_app_secret";
$YAMMER_DOMAIN = "https://test.com";
$YAMMER_ADMIN_TOKEN = "my_yammer_admin_token";

ここにあなたのincファイルに入るさまざまな機能があります

function yammer_user_by_email($email, $token = null){
    global $YAMMER_ADMIN_TOKEN;

    $user = yammer_api_get('https://www.yammer.com/api/v1/users/by_email.json?email='.$email, $YAMMER_ADMIN_TOKEN);

    return $user[0];

}

function yammer_oath_token($user_id, $token_index = 0){
    global $YAMMER_CLIENT_ID;
    global $YAMMER_ADMIN_TOKEN;

    $user_token = yammer_api_get('https://www.yammer.com/api/v1/oauth/tokens.json?consumer_key='.$YAMMER_CLIENT_ID.'&user_id='.$user_id, $YAMMER_ADMIN_TOKEN);

    if ($token_index == -1){
      return $user_token;
    }

    return $user_token[$token_index];
}

function yammer_group_by_name($name){
    global $YAMMER_ADMIN_TOKEN;

    $list = yammer_api_get("https://www.yammer.com/api/v1/search.json?search=$name", $YAMMER_ADMIN_TOKEN);

    if ($list->groups) foreach ($list->groups as $group) {
        if ($group->name == $name) return $group;
    }

    return null;

}

function yammer_group_join($group_id, $token = null) {
    yammer_api_post("https://www.yammer.com/api/v1/group_memberships.json?group_id=$group_id", "group_id=$group_id", $token);
}

これは、すべての http 呼び出しをルーティングする関数です。管理者トークンは、すべての呼び出しのヘッダーに入ります。

function yammer_api_call($url, $method = 'GET', $body = '', $token){

  if ($token == null) {
    if (!$_SESSION['yammer_token'] || !$_SESSION['yammer_token']->access_token->token) return false;
    $token = $_SESSION['yammer_token']->access_token->token;
  }

  if ($method == 'GET'){
    $opts = array('http' =>
      array(
        'method'  => $method,
        'header'  => "Host: www.yammer.com\r\n" 
            ."Authorization: Bearer " . $token . "\r\n"
      )
    );
  }else{
    $opts = array('http' =>
      array(
        'method'  => $method,
        'header'  => "Content-Type: application/x-www-form-urlencoded\r\n"
            ."Host: www.yammer.com\r\n" 
            ."Authorization: Bearer " . $token . "\r\n"
            ."Content-Length: " . strlen($body) . "\r\n",
        'content' => $body,
        'timeout' => 60
      )
    );
  }

  $context  = stream_context_create($opts);
  $resp = file_get_contents($url, false, $context);
  $resp_obj = json_decode($resp);
  return $resp_obj;

}

それはそれを行う必要があります。

于 2014-01-16T19:25:42.807 に答える