4

我有一个用 Coldfusion 8 编写的 Instagram 应用程序,它基本上通过标签提取媒体,然后允许人们对照片点赞/投票,这一切都是通过 Instagram API 完成的。不过,Liking 部分让我悲痛欲绝,因为我可以在没有戏剧性的情况下获得 Authentication 和 Access_Token,但是 Access_Token 默认情况下似乎没有 Like 的权限。Authenticate 调用“范围”有一个可选参数,它允许您传递 Access_Token 允许的权限,但我不知道如何通过 ColdFusion CFHTTP 将其作为 POST 传递。

这是通过 CFHTTP 以 type="FormField" 形式循环所有参数的数据的准备工作。无论我如何尝试并呈现范围选项,无论是 JSON 格式、带空格的字符串、带“+”分隔符的字符串,它似乎都没有效果,并且由于权限错误,Like 操作继续失败。

<cfscript>
    var LOCAL = {};
    LOCAL['config'] = {};
    LOCAL['returnStruct'] = {};

    // prep packet required by the main call method
    // the following values are required for EVERY call
    LOCAL['config']['method'] = 'POST';
    LOCAL['config']['format'] = ARGUMENTS['outputType'];
    LOCAL['config']['url'] = VARIABLES.authURL;

    // variables required by this method
    LOCAL['config']['params'] = {};
    LOCAL['config']['params']['client_secret'] = ARGUMENTS.client_secret;
    LOCAL['config']['params']['grant_type'] = 'authorization_code';
    LOCAL['config']['params']['redirect_uri'] = ARGUMENTS.redirect_uri;
    LOCAL['config']['params']['code'] = ARGUMENTS.code;
    LOCAL['config']['params']['scope'] = 'likes comments relationships';

</cfscript>
4

1 回答 1

3

如果其他人遇到同样的问题,“范围”没有正确应用于返回 Access_Token,那么问题是 Instagram 文档对于应该在哪里使用这个参数含糊不清。正如它在服务器端身份验证期间建议的那样,我已经尝试了所有可能的方式作为 POST 操作,但是它似乎只有在作为 GET 参数发送并且经过一些玩弄之后我决定将“范围”参数添加到第二阶段身份验证是请求代码并且有效的地方!见下文 https://api.instagram.com/oauth/authorize/?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code&scope=likes+basic

这将向用户显示来自 Instagram 的确认消息,以允许应用程序代表用户执行点赞,之后其他一切都像魅力一样工作。

于 2013-02-25T22:25:54.987 回答