{"action":"created","comment":{"url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/pulls/comments/23644082","id":23644082,"diff_hunk":"@@ -0,0 +1,223 @@\n+<?php\n+/**\n+ * Copyright 2014 Facebook, Inc.\n+ *\n+ * You are hereby granted a non-exclusive, worldwide, royalty-free license to\n+ * use, copy, modify, and distribute this software in source code or binary\n+ * form for use in connection with the web services and APIs provided by\n+ * Facebook.\n+ *\n+ * As with any software that integrates with the Facebook platform, your use\n+ * of this software is subject to the Facebook Developer Principles and\n+ * Policies [http://developers.facebook.com/policy/]. This copyright notice\n+ * shall be included in all copies or substantial portions of the software.\n+ *\n+ * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL\n+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n+ * DEALINGS IN THE SOFTWARE.\n+ *\n+ */\n+namespace Facebook\\Authentication;\n+\n+use Facebook\\Exceptions\\FacebookSDKException;\n+\n+/**\n+ * Class AccessToken\n+ * @package Facebook\n+ */\n+class AccessToken implements \\Serializable\n+{\n+\n+  /**\n+   * The access token.\n+   *\n+   * @var string\n+   */\n+  protected $accessToken = '';","path":"src/Facebook/Authentication/AccessToken.php","position":40,"original_position":40,"commit_id":"f6ec4426b3b53ddedb070eeb59c7c85cae1099a0","original_commit_id":"f6ec4426b3b53ddedb070eeb59c7c85cae1099a0","user":{"login":"yguedidi","id":1480128,"avatar_url":"https://avatars.githubusercontent.com/u/1480128?v=3","gravatar_id":"","url":"https://api.github.com/users/yguedidi","html_url":"https://github.com/yguedidi","followers_url":"https://api.github.com/users/yguedidi/followers","following_url":"https://api.github.com/users/yguedidi/following{/other_user}","gists_url":"https://api.github.com/users/yguedidi/gists{/gist_id}","starred_url":"https://api.github.com/users/yguedidi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yguedidi/subscriptions","organizations_url":"https://api.github.com/users/yguedidi/orgs","repos_url":"https://api.github.com/users/yguedidi/repos","events_url":"https://api.github.com/users/yguedidi/events{/privacy}","received_events_url":"https://api.github.com/users/yguedidi/received_events","type":"User","site_admin":false},"body":"`$value` is maybe a better name","created_at":"2015-01-27T21:22:54Z","updated_at":"2015-01-27T21:22:54Z","html_url":"https://github.com/facebook/facebook-php-sdk-v4/pull/330#discussion_r23644082","pull_request_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/pulls/330","_links":{"self":{"href":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/pulls/comments/23644082"},"html":{"href":"https://github.com/facebook/facebook-php-sdk-v4/pull/330#discussion_r23644082"},"pull_request":{"href":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/pulls/330"}}},"pull_request":{"url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/pulls/330","id":28128002,"html_url":"https://github.com/facebook/facebook-php-sdk-v4/pull/330","diff_url":"https://github.com/facebook/facebook-php-sdk-v4/pull/330.diff","patch_url":"https://github.com/facebook/facebook-php-sdk-v4/pull/330.patch","issue_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/issues/330","number":330,"state":"open","locked":false,"title":"[4.1] Refactored OAuth 2.0 functionality","user":{"login":"SammyK","id":578780,"avatar_url":"https://avatars.githubusercontent.com/u/578780?v=3","gravatar_id":"","url":"https://api.github.com/users/SammyK","html_url":"https://github.com/SammyK","followers_url":"https://api.github.com/users/SammyK/followers","following_url":"https://api.github.com/users/SammyK/following{/other_user}","gists_url":"https://api.github.com/users/SammyK/gists{/gist_id}","starred_url":"https://api.github.com/users/SammyK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SammyK/subscriptions","organizations_url":"https://api.github.com/users/SammyK/orgs","repos_url":"https://api.github.com/users/SammyK/repos","events_url":"https://api.github.com/users/SammyK/events{/privacy}","received_events_url":"https://api.github.com/users/SammyK/received_events","type":"User","site_admin":false},"body":"Finally got around the access token refactor! :)\r\n\r\nSo I finally figured out what has been bothering me about the access token handling.\r\n\r\n- There was too much focus on specifically access tokens & not the whole OAuth 2.0 authentication process.\r\n- This coupled the OAuth HTTP calls to the `AccessToken` entity violating the **S** in [SOLID](http://en.wikipedia.org/wiki/SOLID_%28object-oriented_design%29).\r\n- This also coupled part of the OAuth process to the `FacebookRedirectLoginHelper`.\r\n- It also incorrectly assumed access token metadata was a Graph node.\r\n\r\nAlso, the \"get code from token\" functionality was broken.\r\n\r\nThis PR addresses all these issues.\r\n\r\n\r\n## Summary\r\n\r\n- Moved all the access token stuff into the `Authentication` folder. There's more authentication-related stuff that we should add to the SDK later on (like better permissions checking/handling, etc.).\r\n- Refactored `GraphSessionInfo` into `AccessTokenMetadata` since [the `/debug_token` endpoint](https://developers.facebook.com/docs/graph-api/reference/v2.2/debug_token) does not return a Graph node, but metadata from an access token.\r\n\t- Updated methods on `AccessTokenMetadata` to reflect all the metadata returned from the `/debug_token` endpoint.\r\n- Refactored & removed `AccessToken::validateAccessToken()`\r\n\t- Added `AccessToken::validateMachineId('{machine-id}')` which throws a `FacebookSDKException`.\r\n\t- Added `AccessTokenMetadata::validateAppId('{app-id}')`, `AccessTokenMetadata::validateUserId('{user-id}')`, and `AccessTokenMetadata::validateExpiration()` as recommended [by the docs](https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#checktoken). Those throw a `FacebookSDKException`.\r\n- Added an `OAuth2Client` service which handles the OAuth 2.0 process. (Moved all the request-making methods from `AccessToken` to this class & named them based on Facebook's domain. Also killed the static methods.)\r\n- Added `asString()` convenience method to `AccessToken`\r\n- `OAuth2Client` is now constructor-injected into all of the helpers\r\n- Added an `isAppAccessToken()` method to `AccessToken`\r\n- Ported over #316 security fix from 4.0\r\n- Added `getOAuth2Client()` convenience method to the `Facebook` super service\r\n- Hot fixed a failing test in the `FacebookRedirectLoginHelperTest`.\r\n\r\n## Examples\r\n\r\n```php\r\n/*\r\n\tObtaining access tokens from helpers is easier (no need to get & inject FacebookClient)\r\n*/\r\n// OR: getJavaScriptHelper() or getCanvasHelper() or getPageTabHelper()\r\n$helper = $fb->getRedirectLoginHelper();\r\n$accessToken = $helper->getAccessToken();\r\n\r\necho (string) $accessToken;\r\n// Or\r\necho $accessToken->asString();\r\n\r\n/*\r\n\tAccess Token handling is prettier\r\n*/\r\n// OAuth 2.0 client handler\r\n$oAuth2Client = $fb->getOAuth2Client();\r\n\r\n// Returns a link for \"log in with Facebook\"\r\n$logInUrl = $oAuth2Client->getAuthorizationUrl('{redirect-url}', ['email'], 'foo_state');\r\n\r\n// Returns an access token from a code\r\n$accessToken = $oAuth2Client->getAccessTokenFromCode('{code}');\r\n\r\n// Exchanges a short-lived access token for a long-lived one\r\n$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken('{access-token}');\r\n\r\n// Returns a code from a long-lived access token\r\n$code = $oAuth2Client->getCodeFromLongLivedAccessToken('{access-token}');\r\n\r\ntry {\r\n\t$accessToken->validateMachineId('{machine-id}');\r\n} catch (FacebookSDKException $e) {\r\n\techo 'Invalid machine ID';\r\n\texit;\r\n}\r\n\r\n/*\r\n\tDebugging the access token is more explicit (per docs)\r\n*/\r\n//Calls the `/debug_token` endpoint and returns an `AccessTokenMetadata` entity\r\n$tokenMetadata = $oAuth2Client->debugToken('{access-token}');\r\n\r\ntry {\r\n\t$tokenMetadata->validateAppId('{app-id}');\r\n} catch (FacebookSDKException $e) {\r\n\techo 'Unexpected app ID in access token metadata';\r\n\texit;\r\n}\r\n\r\ntry {\r\n\t$tokenMetadata->validateUserId('{user-id}');\r\n} catch (FacebookSDKException $e) {\r\n\techo 'Unexpected user ID in access token metadata';\r\n\texit;\r\n}\r\n\r\ntry {\r\n\t$tokenMetadata->validateExpiration();\r\n} catch (FacebookSDKException $e) {\r\n\techo 'Access token has expired';\r\n\texit;\r\n}\r\n```\r\n\r\nWudya think? :)\r\n\r\nAfter this PR & feedback from @gfosco on #320, it should be just a matter of updating the docs and releasing 4.1!!","created_at":"2015-01-27T17:33:19Z","updated_at":"2015-01-27T21:22:54Z","closed_at":null,"merged_at":null,"merge_commit_sha":"71276c4dcbcf7f78f37b70ab870fc6f2fb38e770","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/pulls/330/commits","review_comments_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/pulls/330/comments","review_comment_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/pulls/comments/{number}","comments_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/issues/330/comments","statuses_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/statuses/f6ec4426b3b53ddedb070eeb59c7c85cae1099a0","head":{"label":"SammyK:access-token-refactor","ref":"access-token-refactor","sha":"f6ec4426b3b53ddedb070eeb59c7c85cae1099a0","user":{"login":"SammyK","id":578780,"avatar_url":"https://avatars.githubusercontent.com/u/578780?v=3","gravatar_id":"","url":"https://api.github.com/users/SammyK","html_url":"https://github.com/SammyK","followers_url":"https://api.github.com/users/SammyK/followers","following_url":"https://api.github.com/users/SammyK/following{/other_user}","gists_url":"https://api.github.com/users/SammyK/gists{/gist_id}","starred_url":"https://api.github.com/users/SammyK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SammyK/subscriptions","organizations_url":"https://api.github.com/users/SammyK/orgs","repos_url":"https://api.github.com/users/SammyK/repos","events_url":"https://api.github.com/users/SammyK/events{/privacy}","received_events_url":"https://api.github.com/users/SammyK/received_events","type":"User","site_admin":false},"repo":{"id":19321008,"name":"facebook-php-sdk-v4","full_name":"SammyK/facebook-php-sdk-v4","owner":{"login":"SammyK","id":578780,"avatar_url":"https://avatars.githubusercontent.com/u/578780?v=3","gravatar_id":"","url":"https://api.github.com/users/SammyK","html_url":"https://github.com/SammyK","followers_url":"https://api.github.com/users/SammyK/followers","following_url":"https://api.github.com/users/SammyK/following{/other_user}","gists_url":"https://api.github.com/users/SammyK/gists{/gist_id}","starred_url":"https://api.github.com/users/SammyK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SammyK/subscriptions","organizations_url":"https://api.github.com/users/SammyK/orgs","repos_url":"https://api.github.com/users/SammyK/repos","events_url":"https://api.github.com/users/SammyK/events{/privacy}","received_events_url":"https://api.github.com/users/SammyK/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/SammyK/facebook-php-sdk-v4","description":"The Facebook SDK for PHP provides a native interface to the Graph API and Facebook Login.  https://developers.facebook.com/docs/php","fork":true,"url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4","forks_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/forks","keys_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/teams","hooks_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/hooks","issue_events_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/issues/events{/number}","events_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/events","assignees_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/assignees{/user}","branches_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/branches{/branch}","tags_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/tags","blobs_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/git/refs{/sha}","trees_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/statuses/{sha}","languages_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/languages","stargazers_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/stargazers","contributors_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/contributors","subscribers_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/subscribers","subscription_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/subscription","commits_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/commits{/sha}","git_commits_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/git/commits{/sha}","comments_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/comments{/number}","issue_comment_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/issues/comments/{number}","contents_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/contents/{+path}","compare_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/merges","archive_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/downloads","issues_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/issues{/number}","pulls_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/pulls{/number}","milestones_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/milestones{/number}","notifications_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/labels{/name}","releases_url":"https://api.github.com/repos/SammyK/facebook-php-sdk-v4/releases{/id}","created_at":"2014-04-30T17:08:21Z","updated_at":"2015-01-27T18:22:10Z","pushed_at":"2015-01-27T17:29:46Z","git_url":"git://github.com/SammyK/facebook-php-sdk-v4.git","ssh_url":"git@github.com:SammyK/facebook-php-sdk-v4.git","clone_url":"https://github.com/SammyK/facebook-php-sdk-v4.git","svn_url":"https://github.com/SammyK/facebook-php-sdk-v4","homepage":null,"size":1427,"stargazers_count":1,"watchers_count":1,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":1,"forks":1,"open_issues":1,"watchers":1,"default_branch":"master"}},"base":{"label":"facebook:master","ref":"master","sha":"be383ddf8ac5dc86f96e9eca902fa86f477112ee","user":{"login":"facebook","id":69631,"avatar_url":"https://avatars.githubusercontent.com/u/69631?v=3","gravatar_id":"","url":"https://api.github.com/users/facebook","html_url":"https://github.com/facebook","followers_url":"https://api.github.com/users/facebook/followers","following_url":"https://api.github.com/users/facebook/following{/other_user}","gists_url":"https://api.github.com/users/facebook/gists{/gist_id}","starred_url":"https://api.github.com/users/facebook/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/facebook/subscriptions","organizations_url":"https://api.github.com/users/facebook/orgs","repos_url":"https://api.github.com/users/facebook/repos","events_url":"https://api.github.com/users/facebook/events{/privacy}","received_events_url":"https://api.github.com/users/facebook/received_events","type":"Organization","site_admin":false},"repo":{"id":18842338,"name":"facebook-php-sdk-v4","full_name":"facebook/facebook-php-sdk-v4","owner":{"login":"facebook","id":69631,"avatar_url":"https://avatars.githubusercontent.com/u/69631?v=3","gravatar_id":"","url":"https://api.github.com/users/facebook","html_url":"https://github.com/facebook","followers_url":"https://api.github.com/users/facebook/followers","following_url":"https://api.github.com/users/facebook/following{/other_user}","gists_url":"https://api.github.com/users/facebook/gists{/gist_id}","starred_url":"https://api.github.com/users/facebook/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/facebook/subscriptions","organizations_url":"https://api.github.com/users/facebook/orgs","repos_url":"https://api.github.com/users/facebook/repos","events_url":"https://api.github.com/users/facebook/events{/privacy}","received_events_url":"https://api.github.com/users/facebook/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/facebook/facebook-php-sdk-v4","description":"The Facebook SDK for PHP provides a native interface to the Graph API and Facebook Login.  https://developers.facebook.com/docs/php","fork":false,"url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4","forks_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/forks","keys_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/keys{/key_id}","collaborators_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/teams","hooks_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/hooks","issue_events_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/issues/events{/number}","events_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/events","assignees_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/assignees{/user}","branches_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/branches{/branch}","tags_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/tags","blobs_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/git/refs{/sha}","trees_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/git/trees{/sha}","statuses_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/statuses/{sha}","languages_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/languages","stargazers_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/stargazers","contributors_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/contributors","subscribers_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/subscribers","subscription_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/subscription","commits_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/commits{/sha}","git_commits_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/git/commits{/sha}","comments_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/comments{/number}","issue_comment_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/issues/comments/{number}","contents_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/contents/{+path}","compare_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/compare/{base}...{head}","merges_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/merges","archive_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/downloads","issues_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/issues{/number}","pulls_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/pulls{/number}","milestones_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/milestones{/number}","notifications_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/labels{/name}","releases_url":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/releases{/id}","created_at":"2014-04-16T14:20:43Z","updated_at":"2015-01-27T01:33:12Z","pushed_at":"2015-01-27T01:33:11Z","git_url":"git://github.com/facebook/facebook-php-sdk-v4.git","ssh_url":"git@github.com:facebook/facebook-php-sdk-v4.git","clone_url":"https://github.com/facebook/facebook-php-sdk-v4.git","svn_url":"https://github.com/facebook/facebook-php-sdk-v4","homepage":null,"size":2413,"stargazers_count":547,"watchers_count":547,"language":"PHP","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":304,"mirror_url":null,"open_issues_count":29,"forks":304,"open_issues":29,"watchers":547,"default_branch":"4.0-dev"}},"_links":{"self":{"href":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/pulls/330"},"html":{"href":"https://github.com/facebook/facebook-php-sdk-v4/pull/330"},"issue":{"href":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/issues/330"},"comments":{"href":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/issues/330/comments"},"review_comments":{"href":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/pulls/330/comments"},"review_comment":{"href":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/pulls/330/commits"},"statuses":{"href":"https://api.github.com/repos/facebook/facebook-php-sdk-v4/statuses/f6ec4426b3b53ddedb070eeb59c7c85cae1099a0"}}}}