小编Mar*_*ark的帖子

Google OAuth2 - 访问令牌和刷新令牌 - > invalid_grant/Code已被兑换

我的目标是拥有某种长期访问令牌,以便我的Android应用程序可以在当天阅读用户Google日历的事件,而无需每次都获得用户批准.

我能够生成 - 我认为是 - 一次性授权代码; 但是,当我将此发送到我的服务器端,应用程序引擎时,我收到以下错误响应:

400 OK { "error" : "invalid_grant", "error_description" : "Code was already redeemed." }

这是被抛出的异常.我只是抓住它并将其作为一种调试方式发回给自己.

我得到的一次性代码以4/VUr开头,所以我假设它是一次性代码而不是常规访问令牌.

目前,在Android上,我允许用户使用Google+登录,以便我拥有自己的电子邮件地址.从那里我使用以下代码请求一次性授权代码:

try {
    Bundle appActivities = new Bundle();
    appActivities.putString(GoogleAuthUtil.KEY_REQUEST_VISIBLE_ACTIVITIES, "http://schemas.google.com/AddActivity");
    String scopes = "oauth2:server:client_id:" + Constants.SERVER_CLIENT_ID + ":api_scope:https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/calendar";
    //Plus.SCOPE_PLUS_LOGIN + " " + CalendarScopes.CALENDAR_READONLY;
    String acctName = "myGmail";
    String token = GoogleAuthUtil.getToken(getApplicationContext(), acctName, scopes, appActivities);

} catch (UserRecoverableAuthException e) {
        startActivityForResult(e.getIntent(), 257/*REQUEST_AUTHORIZATION/*/);
} catch (Exception e) {
        e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

这段代码来自这里,似乎这就是我必须做的.

然后我将此代码发送到我的App …

google-app-engine android google-calendar-api google-plus google-oauth

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

如何允许将多个参数传递给define_singleton_method

我想创建一个可以动态添加方法并允许多个参数的类.

例如:

r = Robot.new
r.learn_maneuvering('turn') { |degree| puts "turning #{degree} degrees" }
r.turn 50 # => turning 50 degrees
r.turn 50, 60 # => turning 50 degrees # => turning 60 degrees
Run Code Online (Sandbox Code Playgroud)

我的第一次尝试是这样的:

def learn_maneuvering(name, &block)
    define_singleton_method(name, &block) 
end
Run Code Online (Sandbox Code Playgroud)

但是,它只占一个参数..

然后我开始:

def learn_maneuvering(name, &block)
    define_singleton_method(name) do |*args|
        # to do
    end
end
Run Code Online (Sandbox Code Playgroud)

我相信这会循环直到所有参数都被正确使用?Anywho,我不知道如何将这些参数传递给给定的块.

ruby metaprogramming block

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

C++通过引用多次传递指针然后修改它.我怎样才能使它工作?

以下是我所面临问题的一​​个小规模示例.在下面的例子中我使用int指针,但在我自己的代码中,我真的使用指向另一个类的指针.

我确实需要/希望能够将多个指针传递给同一个方法,我真的不想为每个指针编写特定的方法.当我运行代码时,我当然没有得到预期的结果.

我想我已经缩小了问题范围,但我不确定如何解决它.由于C++中的所有内容都是按值传递的,因此我传递的指针需要通过引用传递.我确实尝试在下面的方法中通过引用更改我的方法来调用:

int** getIntPointer() {return &p1;} 
Run Code Online (Sandbox Code Playgroud)

void initializeP1(int **&ip,int n)void initializeP1(int **ip,int n)

但似乎没有任何效果.

有没有人知道如何解决这个问题?

谢谢

#include <iostream>

using namespace std;

class Test {
  private:
    int *p1;   
    int *p2;
    int sizeP1;
    int sizeP2;   
  public:
    int** getIntPointer() {return &p1;}
    void initializeP1(int **&ip,int n){
        sizeP1=n; 
        *ip=new int[n];

        for(int i=0;i<n;i++)
            *ip[i]=i;         
    }  
    void printP1() {
        for(int i=0;i<sizeP1;i++)
            cout<<p1[i]<<" "; 
    }
};

int main() {
    Test t;
    int** p = t.getIntPointer();
    t.initializeP1(*&p,10);
    t.printP1(); 

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ pointers class pass-by-reference

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