标签: access-token

存储用户的Facebook访问令牌

我有一个存储用户访问令牌的数据库(以及一些其他数据).我授权用户时,我的权限列表包括offline_access.

那么用户的访问令牌(客户端)是否始终与数据库中该用户的访问令牌相同?或者用户的访问令牌在注销,更改密码等时是否会发生变化?

facebook oauth access-token

17
推荐指数
2
解决办法
3万
查看次数

如何在不超过api配额的情况下作为一个管理员用户管理多个页面?

我的客户公司为数千家小企业管理Facebook页面.我们构建了一个Facebook应用程序,供我们的客户简化流程,并允许他们一次快速地对多个/所有页面进行更改.

出于任何商业原因,我们的客户公司只为其中一个员工添加了管理员(以及小企业主)的每个页面.此用户帐户已添加我们的应用程序,我们正在抓取页面令牌并使用这些页面令牌来管理页面(更改联系信息,添加选项卡,获取墙上帖子).我们遇到了一些非常苛刻的api请求限制.现在我们每分钟只能添加3个新的Facebook页面(我认为这可能需要6-10次api调用才能完成所有操作).

我已经看到人们估计一个访问令牌允许大约600个请求/ 600秒,但我认为,由于我们使用页面令牌完成了大部分工作,因此我们的操作不会计入单个api限制.

有没有人知道api限制是否基于个人令牌,即使它们在技术上属于同一个用户?考虑到我无法真正为这些页面添加更多管理员,有什么方法可以绕过这个限制吗?

facebook-page facebook-graph-api access-token facebook-access-token

17
推荐指数
1
解决办法
594
查看次数

GoogleAuthUtil.getToken返回无效的身份验证代码

我使用以下内容来获取可以从Android应用程序访问后端的身份验证.这在此处描述https://developers.google.com/identity/protocols/CrossClientAuth.

StringBuffer sb = new StringBuffer();
sb.append("oauth2:server:client_id:");
sb.append(getString(R.string.google_app_id));
sb.append(":api_scope:");
sb.append("profile email");
final String scope = sb.toString();
String token = GoogleAuthUtil.getToken(Activity.this, mAuthAccount, scope);
Run Code Online (Sandbox Code Playgroud)

(之前使用AccountPicker.newChooseAccountIntent设置了mAuthAccount.)

以上内容返回有时已过期的短期认证代码.我想针对谷歌服务器进行检查,但使用GoogleAuthUtil.getToken返回的令牌字符串调用https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=会返回"无效令牌".

在尝试使用之前,如何验证身份验证代码是否已过期?

编辑:返回的字符串不是令牌,而是授权代码,可以与谷歌API交换以获取令牌(返回的字符串以"/ 4"开头,而不是"/ 1"或"/ 2",如果我记得的话正确).

代码并不总是有效(在我的服务器上),我希望能够检查代码是否可以使用或已过期.

android access-token

17
推荐指数
1
解决办法
3279
查看次数

在laravel passport客户端应用程序中使用访问令牌获取用户数据

我已经使用Laravel Passport文档成功创建了server.appclient.app.一切都按预期工作.

client.app路由:

Route::get('callback', function (Request $request) {
   $http = new GuzzleHttp\Client;
   $response = $http->post('http://server.app/oauth/token', [
    'form_params' => [
        'grant_type' => 'authorization_code',
        'client_id' => 3,
        'client_secret' => 'secret',
        'redirect_uri' => 'http://client.app/callback',
        'code' => $request->code
    ]
   ]);
   return json_decode((string) $response->getBody(), true)['access_token'];
});
Run Code Online (Sandbox Code Playgroud)

默认情况下,此路由返回access_token,我可以使用它来执行任何操作.

请求:

http://server.app/oauth/authorize?client_id=3&redirect_uri=http%3A%2F%2Fclient.app%2Fcallback&response_type=code&scope=
Run Code Online (Sandbox Code Playgroud)

返回:

http://client.app/callback?code=access_token
Run Code Online (Sandbox Code Playgroud)

题:

如何使用client.app中给定的access_token 向server.app发出正确的请求以获取用户的电子邮件(s).

我应该使用: http://server.app/api/user请求获取数据?如果是的话,我怎么能这样做?如果可能,请写一个代码.

谢谢你的回答.

php json access-token laravel laravel-passport

17
推荐指数
3
解决办法
5万
查看次数

Google API Oauth php永久访问

我正在使用谷歌日历API.这就是我想要的,一旦你给予应用程序许可,我总是可以使用该应用程序,而无需每天访问.我一直听说我需要保存访问令牌或使用刷新令牌来做我想做的事情.这就是问题,你是怎么做到的?代码如何?我已经尝试将令牌保存在cookie中,但一小时后,访问令牌已过期.如何让用户保持登录状态?

PS:请给我解释代码示例.

这是我的代码(使用CakePHP):

$client = new Google_Client();

    $client->setApplicationName("Wanda3.0 Agenda");

    $cal = new Google_CalendarService($client);

    if (isset($_GET['code'])) {

        $client->authenticate($_GET['code']);


        $_SESSION['token'] = $client->getAccessToken();


        header('Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);

    }

    if (isset($_SESSION['token'])) { $client->setAccessToken($_SESSION['token']); }

if ($client->getAccessToken()) {
        /************* Code entry *************/


    }else{
        /************* Not connected to google calendar code *************/
        $authUrl = $client->createAuthUrl();

        $returnArr = array('status' => 'false', 'message' => "<a class='login' href='$authUrl'>Connect Me!</a>");

        return $returnArr;

    }
Run Code Online (Sandbox Code Playgroud)

php google-api access-token oauth-2.0

16
推荐指数
1
解决办法
2万
查看次数

OAuth 2.0访问令牌已过期,并且刷新令牌不可用

我有一个基于Web的应用程序,它使用Google OAuth2.0作为登录框架.直到昨天它还能很好地工作.访问令牌过期后,applcation无法获取刷新令牌.除此之外,"请求许可"页面已更改为"具有离线访问权限",而不是"知道您在Google上的身份"和"查看您的电子邮件"

最初,"请求许可"页面将要求访问"了解您在Google上的身份"和"查看您的电子邮件".用户注销并尝试第二次登录后,"请求权限"页面也是相同的.

但是,直到昨天,"请求权限"页面已更改为"具有脱机访问权限".访问令牌过期后,我得到了错误消息:

PHP致命错误:未捕获的异常'Google_AuthException',并显示消息'OAuth 2.0访问令牌已过期,并且刷新令牌不可用.对于自动批准的回复,不会返回刷新令牌.在/home2/xxxx/public_html/test/google-api-php-client/src/auth/Google_OAuth2.php:221

我试过了$client->setAccessType('online');.但是,我仍然遇到了这个致命的错误.以下是获取访问令牌的代码:

    if ($client->getAccessToken()) {
      $token = $client->getAccessToken();
      $authObj = json_decode($token);
      $refreshToken = $authObj->refresh_token;
      $user = $oauth2->userinfo->get();
      $me = $plus->people->get('me');
      $email = filter_var($user['email'], FILTER_SANITIZE_EMAIL); // get the USER EMAIL ADDRESS using OAuth2

      $optParams = array('maxResults' => 100);
      $activities = $plus->activities->listActivities('me', 'public', $optParams);


      $_SESSION['access_token'] = $client->getAccessToken();
    } else {
      $authUrl = $client->createAuthUrl();
    }
Run Code Online (Sandbox Code Playgroud)

我试图像我一样搜索类似的问题,但我找不到一个.这发生在昨天以后.在此之前,我从未对代码做过任何更改.

access-token oauth-2.0 google-oauth

16
推荐指数
1
解决办法
2万
查看次数

如何在Angular应用程序中存储身份验证令牌

我有一个与REST API服务器通信的Angular应用程序(SPA),我有兴趣找到存储从API服务器返回的访问令牌的最佳方法,以便Angular客户端可以使用它来验证未来的请求到API.出于安全原因,我想将其存储为浏览器会话变量,以便在关闭浏览器后不会保留令牌.

我正在使用资源所有者密码授权实现一个稍微定制的OAuth 2.0版本.Angular应用程序提供了一个表单,供用户输入其用户名和密码.然后将这些凭证发送到API以换取访问令牌,然后必须将其作为标头(授权:承载%令牌%)发送给API的所有出站请求,以便它可以授权对其他路由的请求.

我对Angular的领域还很陌生,但是我想在处理这些令牌时实现的工作流程总结如下.

1)客户端向API发出请求,为其提供用户凭据.

2)如果此请求成功,则令牌存储在某处(问题在哪里)

3)拦截HTTP请求.如果设置了token,则将其作为标头传递给API

4)浏览器/选项卡关闭时,令牌被销毁.

我知道Angular提供$ window.sessionStorage,这似乎是我正在寻找的,但我担心它根据我读过的各种资源不能在所有浏览器上工作.这是一个企业级应用程序,必须兼容各种浏览器(IE,Chrome,Firefox).我能安全地使用它,并确信它会稳定吗?

根据我的理解,替代方案是$ window.localStorage或cookies($ cookies,$ cookieStore).这对我来说不是一个理想的解决方案,因为我不希望这些数据持续存在,但如果这更可靠,我将不得不牺牲兼容性的效率.我也认为可以简单地将它设置为$ rootScope上的值并以这种方式引用它,但我不确定这是否可行.

我希望一切都有道理.任何帮助/建议将不胜感激.谢谢!

cookies session-storage local-storage access-token angularjs

16
推荐指数
1
解决办法
1万
查看次数

通过访问令牌进行Python社交身份验证失败

我目前正在开发一个服务器和Django(1.7),它应该通过使用python-social-auth来处理社交网络的身份验证.我按照本网站上的教程进行操作,该教程描述了简单Web应用程序的过程.这适用于Google和Twitter登录.

由于服务器应该只是一个REST-FULL后端,我决定在客户端获取Access-Token并将其发送到服务器.服务器将通过它进行身份验证.这个过程应该没有问题,甚至在python-social-auth的文档中给出了一个例子.

但是,如果我确实设置了所有内容,我将收到一条错误消息:"后端未找到404".

这是项目的一个最小部分:

settings.py :(我还包括API_KEY和SECRET)

AUTHENTICATION_BACKENDS = (
   #'social.backends.facebook.FacebookOAuth2',
   'social.backends.google.GoogleOAuth2',
   'social.backends.twitter.TwitterOAuth',
   'django.contrib.auth.backends.ModelBackend',
)
Run Code Online (Sandbox Code Playgroud)

views.py(用于身份验证视图)

from django.contrib.auth import login

from social.apps.django_app.utils import psa

@psa('social:complete')
def register_by_access_token(request, backend):
    token = request.GET.get('access_token')
    user = request.backend.do_auth(request.GET.get('access_token'))
    if user:
        login(request, user)
        return 'OK'
    else:
        return 'ERROR'
Run Code Online (Sandbox Code Playgroud)

我从文档中复制了海峡,只将backend.do_auth更改为request.backend.do_auth.这似乎是文档中的错误.

urls.py:

...
url(r'^register-by-token/(?P<backend>[^/]+)/$', 'register_by_access_token')
...
Run Code Online (Sandbox Code Playgroud)

也正如文档中所建议的那样.

我只是试图让这个只适用于google-oauth,因为有一个简单的js-lib可以为你提供访问令牌.这也很好,我发送请求

GET http://localhost:8000/register-by-token/google-oauth2/<access-token>/
Run Code Online (Sandbox Code Playgroud)

如上所述,返回是未找到的404后端.我做了一些调试,发现登录函数中引发的错误不是后端的do_auth()函数.因此,实际的身份验证过程有效.我还尝试使用随机生成的字符串作为令牌并得到相应的错误,用户无法进行身份验证.

有趣的是,用户甚至拥有一个属性后端,它可以保存"social.backends.google.GoogleOAuth2".

谢谢你,如果你和我一起留了很长的帖子,我希望有人知道可能出错的地方:).期待您的回答.

django access-token python-social-auth

16
推荐指数
1
解决办法
1771
查看次数

使用JavaScript SDK获取linkedin访问令牌

我正在研究该应用程序允许用户连接到linkedin(使用javascript).我想存储我从IN.ENV.auth.oauth_token获得的访问令牌,因为我将使用它来发布到用户的时间轴.

但是,当我使用此访问令牌发布到Linkedin时,我收到"无效访问令牌"错误.我使用了正确的访问令牌吗?如何获得Access令牌的正确方法?

这是我的代码:

$("#linkedin-connect").on('click',function(e){  
    e.preventDefault();
    IN.UI.Authorize().place();
    IN.Event.on(IN, "auth", OnLinkedInAuth);  
    return false;
});

function OnLinkedInAuth() {
    console.debug("oauth token:" + IN.ENV.auth.oauth_token);
}
Run Code Online (Sandbox Code Playgroud)

JSFiddle示例

javascript linkedin access-token

16
推荐指数
1
解决办法
4449
查看次数

在检索发件人 ID 的 FCM 令牌之前未设置错误 APNS 设备令牌

我正在从 firebase 接收带有 APN 的通知的消息。在 Firebase 中,我有 APNs 密钥的证书,与从 Apple Developer 中提取的 Firebase 中的 Xcode 项目中具有相同的 id。

但我不知道为什么会发生这种情况,我收到此错误,它正在消息传递扩展中注册两个令牌:

extension AppDelegate : MessagingDelegate {
  func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {}}
Run Code Online (Sandbox Code Playgroud)

在检索发件人 ID“########”的 FCM 令牌之前未设置 APNS 设备令牌。对此 FCM 令牌的通知将不会通过 APNS 传递。设置 APNS 设备令牌后,请务必重新检索 FCM 令牌。

添加了我在 AppDelegate 中的内容

import Firebase
import MasivPushIosSdk

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate{

    var firebaseToken: String = ""
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        FirebaseApp.configure()
        self.registerForFirebaseNotification(application: application)
        Messaging.messaging().delegate = self
        return …
Run Code Online (Sandbox Code Playgroud)

push-notification access-token ios firebase firebase-cloud-messaging

16
推荐指数
3
解决办法
4万
查看次数