Steam Web API の一覧をみていると、必須 paramter に account_id というのが結構でてきます。



これは Steam ID でも API KEY でもないのですが、パッと探しても情報がでてきずらいのでメモしておきます。

account_id とは

「32-bit account ID」 とか 「STEAMID32」とか呼ばれていますが、要するに
  • STEAM ID が 64-bit の ID
  • STEAM ID の 32-bit 版 が account_id
ということです。

生成方法

で、その STEAMID64 と STEAM32 を相互変換する式があって、その方法がこちら。
  • STEAMID64 - 76561197960265728 = STEAMID32
  • STEAMID32 + 76561197960265728 = STEAMID64
  • OR
  • STEAMID32 = The right-most 32-bits of STEAMID64
  • STEAMID64 = concatenate("00000001000100000000000000000001", STEAMID32);
出典: https://dev.dota2.com/showthread.php?t=58317
上記は、64-bit の数値を扱える場合。
そうでない場合は、もうちょっと頑張る必要があるとのこと(試していません)。
define("STEAM_ID_UPPER_32_BITS", "00000001000100000000000000000001");
    // gets the lower 32-bits of a 64-bit steam id
    function GET_32_BIT ($ID_64) {
        $upper = gmp_mul( bindec(STEAM_ID_UPPER_32_BITS) , "4294967296" );
        return gmp_strval(gmp_sub($ID_64,$upper));
    }

    // creates a 64-bit steam id from the lower 32-bits
    function MAKE_64_BIT ( $ID_32, $hi = false ) {
        if ($hi === false) {
            $hi = bindec(STEAM_ID_UPPER_32_BITS);
        }

        // workaround signed/unsigned braindamage on x32
        $hi = sprintf ( "%u", $hi );
        $ID_32 = sprintf ( "%u", $ID_32 );

        return gmp_strval ( gmp_add ( gmp_mul ( $hi, "4294967296" ), $ID_32 ) );      
    }  
※出典: https://dev.dota2.com/showthread.php?t=47115&page=27&p=312817&viewfull=1#post312817

GitHub に相互変換のソースもありました。
https://gist.github.com/almirsarajcic/4664387

以上。