12387
instagram apiを利用しようとしています。

いいね！に関するアクセス権を取得しようとしているのですが、  
AccessTokenの取得は不自由なく完了し(認証時点でscope=likesを追加しました)、  
テストしてみました。

<http://www.dcrew.jp/ja-instagram-api-doc-v1/index.php/likes>

```

    curl -F 'access_token=1961041054.ec1e284.835d91aab88f4326a48eaac38555686d' \
    https://api.instagram.com/v1/media/1029547297065157969_307880528/likes
    
```

その結果、下記のレスポンスが返ってきました。

```

    {"meta":
      {"error_type":"OAuthPermissionsException",
       "code":400,
       "error_message":"This request requires scope=likes,
                        but this access token is not authorized with this
                        scope. The user must re-authorize your application
                        with scope=likes to be granted write permissions."}
    }
    
```

likesは間違いなく認証時に要求したので、なぜかと思い、developerページを確認したところ、  
こんなチェックボックスがありました。

```

    ■ Enforce signed requests
    Requires the use of your Client Secret to sign all API requests.
    Use this option to instruct Instagram to check requests for a signature passed in the 'sig' parameter and validate it.
    This signature is a SHA256 hash of the endpoint and key/value pairs of all parameters for the request,
    using the Client Secret.
    If this option is set, calls with mismatched signatures will fail.
    This technique helps protect your OAuth Client from impersonation attempts from malicious developers.
    Only enable this option for server-to-server calls.
    See the Secure API Requests documentation for details.
    
```

関係ありそうだと思い、チェックを入れて再認証し実行したところ、

```

    Invalid signed-request: Missing required parameter 'sig'
    
```

というエラーになりました。  
頭を抱えており、英語は苦手ですが公式ドキュメントに飛んだところ、このようなページを見つけました。  
これはドキュメント内の「いいね！を付ける」部分にリンクしてあったページです。

<https://help.instagram.com/contact/185819881608116>

ここを見ると、ライセンスうんぬんが書いてあるのですが、  
一番下のラジオボタンをいろいろいじってみたところ、一般的にはアクセスが許可されていないということなのでしょうか？

また、「許可されていないなら、Selenium使って無理やりいいね！つけてやる」  
というのはまずいことでしょうか？

直接開発とは関係の無い話かもしれませんが、よろしくお願いします。
CC BY-SA 3.0
2015-07-15T10:33:21.037
12381
2015-07-15T12:51:14.580
2015-07-15T12:16:52.553
8000
8396
question
instagram
Instagram API を使って Like しようとすると OAuthPermissionsException
結論からいうと、一般的には「いいね！」の追加と削除は許可されていません。  
あと、developerページのチェックボックスは全く関係ありません。

> The ability to POST and DELETE likes, follows and comments is restricted to
> applications that offer business services and not consumer facing apps.
>
>
> いいね！、フォロー、コメントに対するPOSTとDELETEが可能なのは業務用サービスを提供するアプリケーションに限定されており、一般向けのアプリでは利用できません。

<https://help.instagram.com/contact/185819881608116>

> また、「許可されていないなら、Selenium使って無理やりいいね！つけてやる」 というのはまずいことでしょうか？

スクレイピング等の自動化された手段によるコンテンツへのアクセスは検索エンジンを除き規約で禁止されています。

> We prohibit crawling, scraping, caching or otherwise accessing any content
> on the Service via automated means, including but not limited to, user
> profiles and photos (except as may be the result of standard search engine
> protocols or technologies used by a search engine with Instagram's express
> consent).

<https://instagram.com/about/legal/terms/>
CC BY-SA 3.0
2015-07-15T12:35:20.560
12385
2015-07-15T12:51:14.580
2020-06-17T08:14:45.997
-1
3639
12381
answer
[Publishing guidelines and signed requests - Instagram
Developers](http://developers.instagram.com/post/116410697261/publishing-
guidelines-and-signed-requests)

> Starting today, any newly created client_id that wishes to issue POST and
> DELETE requests to the Likes or Relationships API endpoints will first have
> to request that access.

<https://help.instagram.com/contact/185819881608116>

> The ability to POST and DELETE likes, follows and comments is restricted to
> applications that offer business services and not consumer facing apps.

というわけで、2015年4月からは別途申請が必要になったようです。そして一般ユーザー向けのアプリに対して利用を許可するつもりはないみたいですね。

また AccessToken
を取得する際にスコープを指定したとありますが、[指定したはずなのに、承認画面にはLikeに関する権限が記載されなかった](http://qiita.com/___hrau_n___/items/322a7d9cde4834f87f7f)という話を見つけました。指定しても無視される、ということかもしれません。

* * *

> ■ Enforce signed requests

そのアプリケーションがAPIを利用する際に、全てのリクエストを署名しますよ、という設定です。セキュリティを高めるための設定というだけで、本件とは関係ありません。

参考 <http://syncer.jp/instagram-api-matome#sec-10>

> また、「許可されていないなら、Selenium使って無理やりいいね！つけてやる」 というのはまずいことでしょうか？

これだという条項は見つけられませんでしたが、まあ規約違反でしょうね。
CC BY-SA 3.0
2015-07-15T12:42:06.043
12387
2015-07-15T12:42:06.043
8000
12381
answer