Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Instagram post endpoint api中使用id代替短代码_Instagram_Instagram Graph Api - Fatal编程技术网

在Instagram post endpoint api中使用id代替短代码

在Instagram post endpoint api中使用id代替短代码,instagram,instagram-graph-api,Instagram,Instagram Graph Api,这种用法从帖子中提取数据 {shortcode}/?\uu a=1 但我需要这样的用法。 {postID}/?\uu a=1 如何获得此用法?在id上拉取数据的方法是什么?这项工作正在进行 InstagramID类 { /** *Base64 URL安全字符映射。 * *这是Instagram使用的Base64“URL安全”字母表。 * *@var字符串 * *@见https://tools.ietf.org/html/rfc4648 */ const BASE64URL_CHARMAP='a

这种用法从帖子中提取数据 {shortcode}/?\uu a=1

但我需要这样的用法。 {postID}/?\uu a=1

如何获得此用法?在id上拉取数据的方法是什么?

这项工作正在进行


InstagramID类
{
/**
*Base64 URL安全字符映射。
*
*这是Instagram使用的Base64“URL安全”字母表。
*
*@var字符串
*
*@见https://tools.ietf.org/html/rfc4648
*/
const BASE64URL_CHARMAP='abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyzo123456789-';
/**
*所有基10位(0-9)模2结果的内部映射。
*
*由十进制到二进制转换器使用,以避免代价高昂的bcmod()调用。
*按十进制偏移量排列,因此十进制9的答案在索引9中。
*
*@var字符串
*/
const BASE10_MOD2=['0','1','0','1','0','1','0','1'];
/**
*运行时缓存的位值查找表。
*
*@var数组|空
*/
公共静态$bitValueTable=null;
/**
*将Instagram ID转换为其快捷码系统。
*
*@param string | int$id要转换的id。如果
*它大于一个整数的大小,大多数
*Instagram ID是免费的!
*
*@throws\InvalidArgumentException如果提供了错误的参数。
*
*@return字符串是短代码。
*/
公共静态函数toCode(
$id)
{
//首先,我们必须将ID号转换为二进制字符串。
//注:转换速度取决于数字大小。以最常见的
//用于Instagram ID的数字大小,我的旧笔记本电脑可以达到18k/s。
$base2=self::base10to2($id,false);//没有左填充。如果错误,则抛出。
如果($base2==''){
返回“”;//没有要转换的内容。
}
//带前导零的左焊盘,使长度为6位的倍数。
$padAmount=(6-(strlen($base2)%6));
如果($padAmount!=6 | | strlen($base2)==0){
$base2=str_repeat('0',$padmount)。$base2;
}
//现在,一次将其分为6个比特的段。每6个“数字”一次
//二进制数在base64数字中仅为1个“数字”,因为base64
//可以表示值0-63,并且63在base2中为“111111”(6位)。
//例如:9999base10=1011100001111 base2=(2,28,15)base64。
$chunks=str_split($base2,6);
//使用Instagram的字母表将所有块处理并编码为base64。
$encoded='';
foreach($chunk作为$chunk){
//将区块位字符串解释为无符号整数(0-63)。
$base64=bindec($chunk);
//在Instagram的字母表中查找base64字符。
$encoded.=self::BASE64URL_CHARMAP[$base64];
}
返回$encoded;
}
/**
*将Instagram短代码转换为数字ID。
*
*@param string$对短代码进行编码。
*
*@throws\InvalidArgumentException如果提供了错误的参数。
*
*@returnstring返回数字标识。
*/
公共静态函数fromCode(
$code)
{
如果(!is_string($code)| | preg_匹配('/[^A-Za-z0-9\-\\\\\\'/',$code)){
抛出new\InvalidArgumentException('输入必须是有效的Instagram短码');
}
//将base64短代码转换为base2二进制字符串。
$base2='';
对于($i=0,$len=strlen($code);$i<$len;++$i){
//查找当前字符的base64值。
$base64=strpos(self::BASE64URL_CHARMAP,$code[$i]);
//将其转换为6个二进制位(如果需要,左填充)。
$base2.=str_pad(decbin($base64),6,'0',str_pad_左);
}
//现在只需将base2二进制字符串转换为base10十进制字符串。
$base10=self::base2to10($base2);
返回$base10;
}
/**
*将任意大小的十进制数转换为二进制字符串。
*
*@param string | int$base10要转换的数字,以10为基数。必须为0+,
*一个正整数。您必须传递
*如果要转换字符串,请将数字作为字符串
*数量大于适合您的
*CPU的整数大小。
*@param bool$padLeft是否用前导零填充。
*
*@throws\InvalidArgumentException(如果输入不是有效整数)。
*
*@return string将二进制位作为字符串。
*/
公共静态函数base10to2(
$base10,
$padLeft=true)
{
$base10=(字符串)$base10;
如果($base10==''| | preg_匹配('/[^0-9]/',$base10)){
抛出new\InvalidArgumentException('输入必须是正整数');
}
//将任意长度的base10输入转换为base2二进制字符串。
//我们处理为字符串,以支持无限的输入数字大小!
$base2='';
做{
//获取最后一个数字。
$lastDigit=$base10[(strlen($base10)-1)];
//如果最后一个数字不均匀,请在base2字符串中输入一(1),
//否则使用零(0)。数组比bcmod快10倍。
$base2.=self::BASE10_MOD2[$lastDigit];
//现在将整个base10字符串除以2,丢弃小数。
//注:将十进制转换为二进制时,除法是不可避免的,
//但由于有了BC库,它至少是用纯C实现的。
//任意长度除以2的PHP实现
//速度慢了约4倍。无论如何,我的旧笔记本电脑可以处理约160万bcdiv()
//每秒,所以这没有问题。
$base10=bcdiv($base10,'2',0);
}当