相关疑难解决方法(0)

Android全局变量

如何在应用程序的生命周期内创建全局变量keep keep值,无论哪个活动正在运行.

android global-variables

279
推荐指数
8
解决办法
34万
查看次数

获取刷新令牌google api

我无法使用我的代码获取刷新令牌.我只能获得我的访问令牌,令牌类型等,我已经按照一些教程,比如access_type=offline输入我的登录URL:

echo "<a href='https://accounts.google.com/o/oauth2/auth?" 
    . "access_type=offline&client_id=123345555.apps.googleusercontent.com& "
    . "scope=https://www.googleapis.com/auth/calendar+https://www.googleapis.com/auth/plus.me&response_type=code& "
    . "redirect_uri=http://www.sample.com/sample.php&state=/profile'>Google</a>";
Run Code Online (Sandbox Code Playgroud)

以及我获取访问令牌的字段:

$fields=array(
    'code'=>  urlencode($authcode),
    'client_id'=> urlencode($clientid),
    'client_secret'=> urlencode($clientsecret),
    'redirect_uri'=> urlencode($redirecturi),
    'grant_type'=> 'authorization_code',
);
Run Code Online (Sandbox Code Playgroud)

但是我无法获得refresh_token,只有access_token,token_type,id_tokenexpires_in.

google-calendar-api token gdata access-token

72
推荐指数
7
解决办法
12万
查看次数

为什么requestIdToken返回null?

我按照以下步骤进行了此链接

  1. 我将google-services.json下载到我的app文件夹中.
  2. 我的项目级gradle文件:

    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        classpath 'com.google.gms:google-services:1.5.0-beta2'
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我的应用级gradle文件:

    apply plugin: 'com.android.application'
    apply plugin: 'com.google.gms.google-services'
    
    dependencies {
        compile fileTree(include: ['*.jar'], dir: 'libs')
        compile 'com.google.android.gms:play-services-identity:8.3.0'
        compile 'com.google.android.gms:play-services:8.3.0'
        compile 'com.google.android.gms:play-services-plus:8.3.0'
        compile 'com.google.android.gms:play-services-auth:8.3.0'
        ...
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 我为后端服务器创建了OAuth 2.0客户端ID,并将此客户端ID传递给strings.xml文件.

  5. 最后我创建了GoogleSignInOptions和GoogleApiClient对象,如下所示:

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .requestIdToken(getString(R.string.server_client_id))
            .build();
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();
    
    Run Code Online (Sandbox Code Playgroud)

    但问题是result.isSuccess()总是在handleSignInResult函数中返回false.我想也许我在第1步或第2步错误地做某事.我的代码几乎与此SignInActivity.java类似.任何帮助,将不胜感激.

android google-signin

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

Google Calendar API v3 - 使用硬编码凭据进行身份验证

我正在编写一个PHP应用程序,它应该允许用户将某些事件添加到私人Google日历中.日历由我拥有,我需要一种方法让PHP使用固定凭据与日历API进行通信(每个人都可以使用网站上的表单添加事件,但日历本身不公开).

根据我的阅读,可以在v1 API中使用ClientLogin.但是,在v3 API中,可用选项是OAuth2.0或API密钥.使用API​​密钥似乎不起作用,因为它只能用于不需要授权的请求,而OAuth似乎也不正确,因为用户不应该访问他们自己的日历,而是我的日历应用程序使用

我考虑以编程方式获取OAuth令牌,但由于OAuth对话框可以使用验证码,因此迟早会中断.

这似乎是一个标准的用例 - 一个允许用户以某种预定义的方式与单个日历交互的Web应用程序 - 但我找不到任何关于如何在v3 API中实现它的文档.谁能帮我?

php google-calendar-api google-api google-api-php-client google-oauth2

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

使用java离线访问谷歌日历

我们有代码将我们的应用程序日历与登录用户的谷歌日历同步。该代码使用 AuthSub 和 CalendarService 类,但它不提供使用访问令牌和刷新令牌对谷歌日历的离线访问,因为我想使用 OAuth v3 使用日历类。我面临着将旧代码合并到没有 getFeed() 函数的新 v3 Calendar 类的问题。这是我的应用程序中的一些代码

if(StringUtil.isValid(request.getQueryString())) {
                onetimeUseToken = AuthSubUtil.getTokenFromReply(request.getQueryString());
            }       

            if(StringUtil.isValid(onetimeUseToken)) {           

                    String sessionToken = AuthSubUtil.exchangeForSessionToken(onetimeUseToken,null);
                    CalendarService calendarService = new CalendarService("myapp");
                    calendarService.setAuthSubToken(sessionToken, null);    
                    session.setAttribute("calendarServicesession",calendarService);
                    userIDforCalendar = (String) session.getAttribute("calendar_user_no");
                        }

                       CalendarFeed myResultsFeed1 =service.getFeed(new URL("https://www.google.com/calendar/feeds/default/allcalendars/full"),CalendarFeed.class);

            for (int i = 0; i < myResultsFeed1.getEntries().size(); i++) {
                CalendarEntry entry = myResultsFeed1.getEntries().get(i);
                           .....

}
Run Code Online (Sandbox Code Playgroud)

请为我提供一些使用 CalendarService 进行离线访问的方法,这样我就不必对代码进行太多更改。希望得到快速答复。

谢谢- Dravit Gupta

java oauth google-calendar-api authsub

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