Angular:Instagram 授权 - 访问令牌

Posted

技术标签:

【中文标题】Angular:Instagram 授权 - 访问令牌【英文标题】:Angular: Instagram authorization - access token 【发布时间】:2017-09-10 12:42:00 【问题描述】:

所以,我正在构建一个应用程序,它将(除其他外)在特定主题标签上提供 instagram、twitter、fb 和 yt 实时提要

现在我正在开发 instagram(首先),我认为这将是小菜一碟

注册为开发人员 注册应用 获取 appId 和密钥 对 instagram 的角度 http API 调用以获取访问令牌(使用应用程序 ID 和密码) 对 instagram getFeed?hashtag=xy 的角度 http API 调用(使用访问令牌)...

现在,显然不是这样的……

首先,instagram 让我注册应用程序和客户端并重定向 url 然后我需要调用 api 来获取 CODE(link ... 使用我的 client_id 和重定向 uri) 那么我会去获取 ACCESS TOKEN 只有这样我才能进行正常的获取提要 API 调用

好吧,我不介意获取 CODE 的额外步骤……但是……重定向 URL 搞乱了流程……我不知道该怎么办……

在我的 Angular (4 cli) 应用程序中,用户正常工作,它会进入个人资料页面......他将使用选项卡选择一个社交平台并填充提要......现在......我不希望用户从 instagram、twitter、fb 和 yt 被重定向到应用程序......四次......甚至一次......我希望这通过正常的 API 调用在幕后发生

所以如果我在我的 instagram.service.ts 中这样做

getAccessToken() 
  const api = 'https://www.instagram.com/oauth/authorize/';

  const params: HttpParams = new HttpParams()
    .set('client_id', clientId)
    .set('redirect_uri', 'http://localhost:4200/auth/')
    .set('response_type', 'code');

  return this.http.get<any[]>(api, params)
  .map((response) => response)
  .catch((error: any) => Observable.throw(error.error || 'Server error'));

然后调用它,在我的开发者工具中我看到了这个

所以 API 调用成功,但 Angular 应用程序不处理我的身份验证路径...所以它给出 404.... 即使在我的路线中我确实有:

  path: 'auth', children: [
    path: ':instagramtoken', component: MatchesLandingPageComponent,
    path: '**', component: MatchesLandingPageComponent,
  ] ,

所以我的问题是,我该怎么处理这个?没有任何重定向?

。 . .

我还在后端使用 LOOPBACK express 服务器(通过 RESTful API 获取数据)....可能是一种方法吗?所以我会得到一个 http://localhost:3000/api/instagram?hashtag=xy??

【问题讨论】:

先生,您能告诉我您要遵循哪个教程来实施 instagram 吗? 【参考方案1】:

先说几句:

您不会使用 client_secret,因为您在前端应用程序中使用它。如果你把它放在你的javascript代码中,我就不再是秘密了。因此,在这种情况下,您将使用隐式流。

为此使用库可能很有用。 This is a good one.

我不希望用户从 instagram、twitter、fb 和 yt 被重定向到应用程序......四次......甚至一次......

很抱歉,但你必须这样做。这是提供商知道用户对您的应用进行了自动化的唯一方式。在每次请求之前都不需要这样做,因为您可以将令牌存储在会话存储中。 (图书馆可能会自己为您执行此操作。)这适用于 Instagram,因为它们的令牌不会过期,但对于其他人,这可能不一样。

现在关于 404,它正在重定向到 http://localhost:4200/auth/?code...。这不是正确的网址,您可能希望它是 http://localhost:4200/auth?code=...

所以将.set('redirect_uri', 'http://localhost:4200/auth/') 更改为.set('redirect_uri', 'http://localhost:4200/auth')

【讨论】:

我不希望我的用户通过 instagram 进行授权,我希望我的 APP(作为用户)被授权......这就是重点......不是用户正在登录通过我的应用程序登录到 instagram... 或通过 instagram 登录到我的应用程序!我的用户与 Instagram 无关 但看起来我将使用我的环回应用程序在后端解决它 - strongloop.com/strongblog/using-loopback-to-build-apis-for-apis 我了解您希望您的应用程序获得授权。但为了做到这一点,用户需要登录该应用并授予访问权限。 换句话说,在前端是不可能的……好的

以上是关于Angular:Instagram 授权 - 访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

Instagram 访问令牌过期

在rails应用程序中删除instagram授权页面的cookie

Angular 的 Spring Boot 授权服务器访问 - 不断给出 CORS 错误

Android WebView 未加载 Instagram 授权

获取授权用户的头像(Instagram Basic Display API)

尝试授权用户并获取令牌时突然出现 Instagram API“范围”问题 - OAuth