小编And*_*ert的帖子

Azure:无法使用RefreshToken获取新的AccessToken

我正在构建一个需要访问客户的Office 365管理活动的应用程序.我已按照此Azure Active Directory概述中概述的步骤操作,并且能够使用OAuth代码获取初始访问令牌,以及使用此令牌设置O365订阅.

但是,当我使用refresh_token提供的初始令牌获取新的访问令牌时,我收到以下错误:

{"error_description":"AADSTS65001:用户或管理员未同意使用ID为'8f72f805-dfd2-428d-8b0e-771a98d26c16'的应用程序..发送此用户和资源的交互式授权请求.\ r \nTrace ID: df229c3f-8f28-420b-9ac3-321ab1b2ad09\r \n相关ID:0e0f2bcb-4b19-458a-8556-2a6d4e51379f\r \n时间戳:2016-10-03 17:33:20Z","错误":"invalid_grant"}

由于我能够获取并使用初始访问令牌,因此我非常确定用户正在授予我的应用程序一些权限.为了使用刷新令牌获取新的访问令牌,是否需要特定权限?

编辑: 具体来说,我正在使用com.microsoft.azure::adal4j java包,AuthenticationContext类,acquireTokenByAuthorizationCodeacquireTokenByRefreshToken方法:

public class AzureProvisioner {
    private final AuthenticationContext authService = new AuthenticationContext(
            "https://login.windows.net/common/oauth2/token", true, Executors.newSingleThreadExecutor());
    private final ClientCredential clientCredential = new ClientCredential("azureAppId", "azureAppSecret");
    public static final String resource = "https://manage.office.com";
    // Internal implementation of REST interface; Microsoft didn't provide a Java Library
    final Office365ManagementApi managementApi;

    public void acquireToken(final String authCode, …
Run Code Online (Sandbox Code Playgroud)

java azure azure-active-directory adal

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

从$ query-> setMaxResults()获得奇怪的行为

当我在查询上调用setMaxResults时,似乎想要将最大数量视为"2",无论它的实际值是多少.

function findMostRecentByOwnerUser(\Entities\User $user, $limit)
{
    echo "2: $limit<br>";
    $query = $this->getEntityManager()->createQuery('
        SELECT t
        FROM Entities\Thread t
        JOIN t.messages m
        JOIN t.group g
        WHERE 
            g.ownerUser = :owner_user
        ORDER BY m.timestamp DESC
    ');
    $query->setParameter("owner_user", $user);
    $query->setMaxResults(4);
    echo $query->getSQL()."<br>";
    $results = $query->getResult();
    echo "3: ".count($results);
    return $results;
}
Run Code Online (Sandbox Code Playgroud)

当我评论该setMaxResults行时,我得到6个结果.当我离开时,我得到了最近的2个结果.当我在phpMyAdmin中运行生成的SQL代码时,我得到了4个最新的结果.生成的SQL,供参考,是:

SELECT <lots of columns, all from t0_>
FROM Thread t0_ 
INNER JOIN Message m1_ ON t0_.id = m1_.thread_id 
INNER JOIN Groups g2_ ON t0_.group_id = g2_.id 
WHERE g2_.ownerUser_id = ? 
ORDER …
Run Code Online (Sandbox Code Playgroud)

doctrine-orm

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

告诉什么量角器的 waitForAngular 被卡住了?

有什么方法可以确定量角器browser.waitForAngular()卡住了什么?

我的 Protractor 测试基本上加载页面,单击一个元素,然后等待加载新页面。我收到“超时等待量角器在 11 秒后与页面同步”错误;但是,我不使用$timeout,并且可以看到我的浏览器的开发人员控制台中没有未完成的 http 请求。

我可以在浏览器中手动重现与测试相同的步骤,然后运行

angular.getTestability(document.body)
    .whenStable(function() {console.log("holla")})
Run Code Online (Sandbox Code Playgroud)

并看到页面实际上在加载后 1 秒内稳定。

如果我编写一个量角器测试来加载第一页,然后使用browser.get('index.html#second-page'),则测试通过。

我知道我可以设置ignoreSerialization量角器,但老实说,我宁愿不这样做,因为我担心我的 Angular 项目中存在一些潜在的错误。我是否可以采取任何步骤来更深入地了解量角器中发生的事情?

javascript angularjs protractor

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

如何创建 Jersey FormDataContentDisposition 对象?

我在服务中有以下方法:

public interface MyService {    
    @POST
    @Path("/upload-file")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    void uploadFile(@FormDataParam("file") InputStream inputStream,
                    @FormDataParam("file") FormDataContentDisposition contentDisposition);
}
Run Code Online (Sandbox Code Playgroud)

我使用 WebResourceFactory 创建此接口的实例:

final MyService buildProxy() {
    final ClientBuilder clientBuidler = ClientBuilder.newBuilder();
    // register components, trust manager, etc.
    final WebTarget target = clientBuilder.build().target("http://myservice.example.com");
    return WebResourceFactory.newResource(
            MyService.class, target, false, ImmutableMultivaluedMap.empty(), 
            Collections.emptyList(), new Form());
}
Run Code Online (Sandbox Code Playgroud)

我想使用此代理调用我的方法,但我找不到创建FormDataContentDisposition. 我最好的选择真的是创建标头字符串,然后将其传递到 吗new FormDataContentDisposition(String header)?我可以在某个地方放松我的类型来访问更方便的构造函数吗?我可以在文件上传中使用不同的、更方便的界面吗?我主要在界面中包含内容处置,以便在将整个文件保存到磁盘之前可以拒绝太大的文件。

java multipartform-data jersey

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

我可以在Doctrine 2实体方法中包含一个便利查询吗?

我想在我的Doctrine 2实体中包含一些额外的函数来包含我必须经常运行的代码.例如:

用户 - 有很多帖子
帖子 - 只有一个用户

我已经有了一个功能$user->getPosts(),但这会返回我的所有帖子.我想写一个$user->getActivePosts(),就像:

$user->getPosts()->where('active = true') //if this were possible
要么:
$em->getRepository('Posts')->findBy(array('user'=>$user,'active'=>true)) //if this were more convenient

据我所知,虽然实体本身没有办法回到实体经理,所以我唯一的选择就是

class User {
   function getActivePosts() {
     $all_posts = $this->getPosts();
     $active_posts = new ArrayCollection();
     foreach ($all_posts as $post) {
        if ($post->getActive()) {
           $active_posts->add($post);
        }
     }
     return $active_posts;
}
Run Code Online (Sandbox Code Playgroud)

但是,这需要我将所有帖子加载到我的实体管理器中,当我真的只需要它们的一小部分时,它需要我在PHP中进行过滤,而在SQL层中这样做更合适.有没有办法完成我在实体内部要做的事情,或者我是否必须在其外部创建代码?

doctrine doctrine-orm

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

如何在 Postgresql 中创建多列 GiST 索引

postgresql文档指定 GiST 索引可以有多个列,但没有提供可能是什么样子的示例。

我有一个表格来跟踪不同客户拥有的资产。

CREATE TABLE asset (
    id serial PRIMARY KEY,
    description text NOT NULL,
    customer_id uuid NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

我正在编写一个查询,允许客户根据描述中的词来搜索资产。

SELECT *
FROM asset
WHERE to_tsvector('english', asset.description) @@ plainto_tsvector('english', ?)
AND asset.customer_id = ?;
Run Code Online (Sandbox Code Playgroud)

如果这是一个非 tsvector 查询,我会构建一个简单的多列索引

CREATE INDEX idx_name ON asset(customer_id, description);
Run Code Online (Sandbox Code Playgroud)

只能在 tsvector 上创建索引:

CREATE INDEX idx_name ON asset USING gist(to_tsvector('english', asset.description));
Run Code Online (Sandbox Code Playgroud)

但是,查询优化器不使用 gist 索引,因为它似乎customer_id要先进行过滤。有没有办法可以customer_id以某种方式将非 tsvector 字段包含在要点索引中,或者我不走运?

postgresql tsvector psql

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

如何解释 postgresql 死锁消息?

我正在运行 Postgresql 9.5.2 服务器,我偶尔会看到如下消息:

错误:检测到死锁
详细信息:进程 1234 等待事务 3042999324 上的 ShareLock;被进程 5678 阻止。
进程 5678 等待事务 3042999328 上的 ShareLock;被进程 1234 阻止。
提示:请参阅服务器日志以获取查询详细信息。
其中:在锁定关系“asset”中的元组 (5389,30) 时

如果它包含有关导致死锁的行或列的任何信息,它将帮助我调试首先导致错误的大而丑陋的公用表表达式。

postgresql deadlock psql

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

AWS Lambda 使用多版本 JAR 中的错​​误类文件?

我的 lambda 在 Java8 下运行了几年,我刚刚将其更新到 Java 11。它立即崩溃了,给了我这样的错误:

\n
Caused by: java.lang.ExceptionInInitializerError\n    at com.mycompany.rest.providers.JsonProvider.writeTo(JsonProvider.java:80)\n    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:242)\n    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:227)\n    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:139)\n    at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1116)\n    at org.glassfish.jersey.client.ClientRequest.doWriteEntity(ClientRequest.java:461)\n    at org.glassfish.jersey.client.ClientRequest.writeEntity(ClientRequest.java:443)\n    at org.glassfish.jersey.client.internal.HttpUrlConnector._apply(HttpUrlConnector.java:367)\n    at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:265)\n    at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:297)\n    ... 15 more\nCaused by: java.lang.UnsupportedOperationException: No class provided, and an appropriate one cannot be found.\n    at org.apache.logging.log4j.LogManager.callerClass(LogManager.java:571)\n    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:596)\n    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:583)\n    at com.mycompany.rest.util.NonClosingOutputStream.<clinit>(NonClosingOutputStream.java:11)\n    ... 25 more\n
Run Code Online (Sandbox Code Playgroud)\n

所讨论的类并不是特别令人兴奋,并且具有在我的类中常见的简单静态初始化:

\n
public class NonClosingOutputStream extends ProxyOutputStream {\n    private static final Logger log = LogManager.getLogger(); // Line 11\n\n    public NonClosingOutputStream(final OutputStream proxy) …
Run Code Online (Sandbox Code Playgroud)

java log4j2 aws-lambda multi-release-jar

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