标签: access-token

PHP SDK:如何在用户授权应用程序后捕获访问令牌?

这是使用新的(est)Facebook PHP SDK在Facebook平台上的画布应用程序.

我们使用Facebook教程中的PHP示例(https://developers.facebook.com/docs/appsonfacebook/tutorial/)来触发OAuth对话框并让测试用户进入重定向URL.

在重定向URL,我们使用Facebook签名请求文档页面(https://developers.facebook.com/docs/authentication/signed_request/)中的PHP示例,我们的测试用户可以成功授权该应用程序.

但是,在测试用户验证应用程序后,我们无法捕获访问令牌及其过期.我们可以在附加到重定向URL的地址栏中看到它,但它不会显示在$ _REQUEST数组中.如果我们将{$ access_token = $ facebook-> getAccessToken();}添加到重定向URL页面,它会显示访问令牌的值,但它显示的值不是我们单击Show时看到的完整令牌字符串"测试用户角色"页面中的令牌(我们认为它是测试用户的正确访问令牌).

以下是附加访问令牌的重定向URL示例:http: //karmakorn.com/karmakorn/alpha20/kk-fb-auth.php#access_token=126736467765%7C2.AQDavId8oL80P5t9.3600.1315522800.1-100002908746828%7CJICJwM1P_97tKmqkEO5pXDCf- 7Y&expires_in = 6008

以下是var_dump为同一页面的$ REQUEST数组显示的内容:array(3){[" _ qca"] => string(26)"P0-709927483-1291994912966"["_ _ spwitchTo5x"] => string(2)" 30"["PHPSESSID"] => string(26)"euois02ead39ijumca7nffblh2"}

我们不知道为什么$ _REQUEST数组与附加到URL的值不同,更重要的是 - 如何捕获访问令牌及其到期日期.

有人可以向我们展示一个工作示例,说明在重定向页面上运行parse_signed_request($ signed_request,$ secret)函数后如何捕获这些数据?谢谢!

附加信息:

以下是来自A)我们的测试索引页面的相关代码,以及B)我们的测试重定向页面.如果我们使用我们的文本索引页面作为重定向URL它会陷入无限循环 - 因为用户永远不会被识别.

A)索引页面

// Create kk-fb app instance
$facebook = new Facebook(array(
    'appId'  => KKFB_ID,
    'secret' => KKFB_KY,
    'oauth' => true,
));

$app_id = KKFB_ID;
$secret = KKFB_KY;
$canvas_auth = 'http://karmakorn.com/karmakorn/alpha20/kk-fb-auth.php';

$auth_url = "https://www.facebook.com/dialog/oauth?" 
                . "client_id=" . …
Run Code Online (Sandbox Code Playgroud)

access-token oauth-2.0 facebook-php-sdk facebook-canvas

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

Facebook应用程序验证令牌获取错误

我试图通过Facebook API Graph Exlorer按照facebook的说明为我的应用程序请求authtoken .当我使用以下格式的URL进行get调用时:

https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

 {
  "error": {
    "message": "Invalid callback",
    "type": "OAuthException",
    "code": 1
  }
}
Run Code Online (Sandbox Code Playgroud)

关于如何获取我的应用程序的访问令牌的建议将不胜感激!

如果我尝试以编程方式运行以下代码来获取访问代码:

 FB.api('/oauth/access_token?client_id={APP_ID}&client_secret={APP_SECRET}&grant_type=client_credentials', function(response) {
   alert(JSON.stringify(response));
  });
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

{"error":"load-error: unknown"}
Run Code Online (Sandbox Code Playgroud)

get facebook-graph-api access-token facebook-access-token

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

通过Google Plus API登录

我正在尝试收集用户的数据,当他注册我的网站时.

我在提出请求时要求以下范围

<span id="signinButton">
  <span
    class="g-signin"
    data-callback="signinCallback"
    data-clientid="1085488274737.apps.googleusercontent.com"
    data-cookiepolicy="single_host_origin"
    data-requestvisibleactions="http://schemas.google.com/AddActivity"
    data-scope="https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/plus.login">
  </span>
</span> 
Run Code Online (Sandbox Code Playgroud)

然后,我首先尝试https://www.googleapis.com/oauth2/v1/userinfo?access_token=通过使用上一步中获得的访问令牌发出GET请求来获取用户的电子邮件ID和Google + ID .这完全没问题.它给了我用户的ID和电子邮件.

但是,如果我使用获得的ID和访问令牌来获取更多个人资料详细信息以及他圈子中的朋友,则无法使用.

https://www.googleapis.com/plus/v1/people/userID/?key=
Run Code Online (Sandbox Code Playgroud)

它表示无效密钥无效.

因此,我完全无能为力.提到数据范围有什么错误吗?

login access-token google-plus

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

如何使用隐式流生成Instagram访问令牌?

我想使用Instagram API在我自己的网站上显示我自己的内容.我可以在他们的文档中看到,当应用程序处于沙盒模式时,内容所有者可以在其网站上显示多达20个媒体.

我在我的帐户上创建了一个应用程序,我正在尝试使用他们的客户端隐式身份验证来生成一个access_token.

我点击此网址并登录我的帐户:

https://www.instagram.com/oauth/authorize/?client_id=MYCLIENTID&redirect_uri=www.mysite.com&response_type=token

当我提交登录表单时,我被带到Instagram 404页面,上面写着:

Sorry, this page isn't available. The link you followed may be broken, or the page may have been removed. Go back to Instagram.

我错过了什么?我甚至需要access_token吗?在去年11月他们改变他们的API之前,我能够client_id在我的请求中使用它.我想那不可能了?

token access-token instagram instagram-api

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

AADSTS70002:验证Azure AD应用程序中的凭据时出错

在我的Azure AD应用程序中,我试图在下面的部分中检索访问令牌

 AuthorizationCodeReceived = (context) =>
                        {
                            var code = context.Code;
                            ClientCredential credential = new ClientCredential(ClientId, appKey);
                            string signedInUserID = context.AuthenticationTicket.Identity.FindFirst(ClaimTypes.NameIdentifier).Value;
                            AuthenticationContext authContext = new AuthenticationContext(Authority, new ADALTokenCache(signedInUserID));
                            AuthenticationResult result = authContext.AcquireTokenByAuthorizationCode(
                            code, new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path)), credential, graphResourceID);

                            return Task.FromResult(0);
                        },
Run Code Online (Sandbox Code Playgroud)

而我正在低于错误

{"AADSTS70002:错误验证凭证AADSTS50011:回复地址' https://开头本地主机:44301 / '不匹配回复地址' https://开头本地主机:44301 '请求授权代码时提供\ r \nTrace ID: fd34bd6b-37d5-4b66-85d0-657b27103049\r \n相关ID:ea970ddb-cab8-4949-b749-1b4a8d7b5a6b\r \n时间戳:2016-08-25 06:44:59Z"}

在Azure门户中,我已经仔细检查了回复网址是否匹配 在此输入图像描述 这应该是什么问题?

access-token azure-active-directory

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

验证Azure广告访问令牌时签名无效,但id令牌有效

使用jwt.io验证我的Azure广告访问令牌时,我得到了无效签名。但是,我的ID令牌可以很好地验证!


在验证Azure广告访问令牌

https://nicksnettravels.builttoroam.com/post/2017/01/24/Verifying-Azure-Active-Directory-JWT-Tokens.aspx时,我已经看到并尝试了无效签名中建议的解决方案,
但是都不适合我的访问令牌。

访问和ID令牌是通过Adal.js生成的:

    var endpoints = {
        "https://graph.windows.net": "https://graph.windows.net"
    };
    var configOptions = {
        tenant: "<ad>.onmicrosoft.com", // Optional by default, it sends common
        clientId: "<app ID from azure portal>",
        postLogoutRedirectUri: window.location.origin,
        endpoints: endpoints,
    }
    window.authContext = new AuthenticationContext(configOptions);
Run Code Online (Sandbox Code Playgroud)

为什么我可以验证我的ID令牌,但不能验证我的访问令牌?

validation access-token oauth-2.0 azure-active-directory adal

1
推荐指数
4
解决办法
4488
查看次数

url 上的 Opencart 令牌是会话 id 吗?

在 opencart 中,我看到 URL 如下所示:

https://www.example.com/admin/index.php?route=common/dashboard&token=Ger45ZJMsdfSSDggHfghI4wcQzbD

这个令牌是我的会话 ID 吗?如果是,在 url 上传递会话 ID 是否安全(带或不带 ssl)?

php url get opencart access-token

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

GitHub API:个人访问令牌自行删除

我需要访问 Github GraphQL API,以便每 N 小时永久发出以下请求:

query($ids: [ID!]!) {
rateLimit {
    cost
    remaining
    resetAt
}

nodes(ids: $ids) {
    ... on Repository {
        milestones(last: 100) {
            nodes {
                issues(last: 100) {
                    nodes {
                        closedAt
                        closed
                    }
                }

                state
                dueOn
            }
        }
    }
}
}
Run Code Online (Sandbox Code Playgroud)
  1. 我创建了一个个人访问令牌,就像这里所说的那样,只有 1 个范围:public_repo
  2. 我将其复制并粘贴到我的应用程序属性中。
  3. 我启动了我的应用程序,它按预期工作。
  4. 但有时,在一些不清楚的情况下,几乎随机(在应用程序执行期间或关闭后),Github API 响应401 Unauthorized
  5. 我访问我的设置/开发人员设置/个人访问令牌。最后创建的令牌消失。
  6. 为什么?我究竟做错了什么?

github token github-api access-token

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

资源“此处的 GUID 值”不存在或其查询的引用属性对象之一不存在

我正在尝试更改 Azure AD 用户密码。

用户已经使用隐式流和库在SPA应用程序中进行了身份验证。adal

打电话时:

return await graphClient.Me.Request().UpdateAsync(new User
                {
                    PasswordProfile = new PasswordProfile
                    {
                        Password = userPasswordModel.NewPassword,
                        ForceChangePasswordNextSignIn = false
                    },
                });
Run Code Online (Sandbox Code Playgroud)

我收到此异常:

{"代码:Request_ResourceNotFound\r\n消息:资源“35239a3d-67e3-4560-920a-2e9ce027aeab”不存在或其查询的引用属性对象之一不存在。\r\n\r\n内部错误\r\ n"}

调试我得到的访问令牌,Microsoft Client SDK我看到这个GUID指的是oidsub属性。见下文:

在此处输入图片说明

这是我用来获取令牌的代码:

 IConfidentialClientApplication clientApp =
     ConfidentialClientApplicationBuilder.Create(Startup.clientId)
            .WithAuthority(string.Format(AuthorityFormat, Startup.tenant))
            .WithRedirectUri(Startup.redirectUri)
            .WithClientSecret(Startup.clientSecret)
            .Build();

            var authResult = await clientApp.AcquireTokenForClient(new[] { MSGraphScope }).ExecuteAsync();

            return authResult.AccessToken;
Run Code Online (Sandbox Code Playgroud)

我在SPA应用程序中使用隐式流。在这样做时,我看到我的用户已通过身份验证并且所有声明都存在。ClaimsPrincipal.Current

我在 GitHub 和 Microsoft Docs 上阅读了很多文档,但我仍然不清楚如何实现这一点。顺便说一下,我正在使用这些 Microsoft Graph 包:

  <package id="Microsoft.Graph" …
Run Code Online (Sandbox Code Playgroud)

authentication change-password access-token microsoft-graph-sdks microsoft-graph-api

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

为什么 MSAL loginPopup 响应“应用程序客户端请求资源上不存在的范围”?

(问题的继续:为什么我的 SPA 正在使用 Azure Active Directory 调用我的 WebAPI,收到“此请求的授权已被拒绝。”?

我的客户端 SPA 正在尝试调用受保护的 WebAPI(服务)。客户端使用 MSAL(Micosoft 身份验证库)。问题发生在调用 API 之前,即在下图中的 1 和 2 之间。

在此处输入图片说明

这是客户

<!DOCTYPE html>
<html>
<head>
    <title>Quickstart for MSAL JS</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.3.4/bluebird.min.js"></script>
    <script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.2/js/msal.js"></script>
</head>
<body>
    <div class="container">
        <div>
            <button id="GetTodos" onclick="getTodos()">Get Todos</button>
        </div>
    </div>
    <script>

        var msalConfig = {
            auth: {
                clientId: 'xxxxxxxxxxxxxxxxxxxxxxx2427', 
                authority: "https://login.microsoftonline.com/my.tenant"
            },
            cache: {
                cacheLocation: "sessionStorage",
                storeAuthStateInCookie: true
            }
        };


        var requestObj = {
            // scopes: ["user.read"]
            scopes: ["access_as_user"]
        };

        var myMSALObj = new …
Run Code Online (Sandbox Code Playgroud)

azure access-token single-page-application azure-active-directory azure-ad-msal

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