Google Plus无法发布消息

时间:2013-03-01 11:17:23

标签: objective-c google-api oauth-2.0 google-plus google-oauth

Google授权后,我尝试发布一个没有任何确认的时刻:

GTMOAuth2Authentication *auth;
auth = [GTMOAuth2ViewControllerTouch authForGoogleFromKeychainForName:TMH_SOCIAL_GOOGLE_KEYCHAIN
                                                             clientID:TMH_SOCIAL_GOOGLE_CLIENTID
                                                         clientSecret:TMH_SOCIAL_GOOGLE_SECRET];
if ([auth canAuthorize]) {

    NSString *postString = @"{\"type\":\"http:\\/\\/schemas.google.com\\/AddActivity\",\"target\":{\"id\":\"tmhabc\",\"type\":\"http:\\/\\/schemas.google.com\\/AddActivity\",\"description\":\"First post description\",\"name\":\"First post\"}}";

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://www.googleapis.com/plus/v1/people/me/moments/vault?access_token=%@&key=%@", auth.refreshToken, TMH_SOCIAL_GOOGLE_APIKEY]];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

    GTMHTTPFetcher *myFetcher = [GTMHTTPFetcher fetcherWithRequest:request];

    [myFetcher setAuthorizer:auth];
    [myFetcher setPostData:[postString dataUsingEncoding:NSUTF8StringEncoding]];

    [myFetcher beginFetchWithCompletionHandler:^(NSData *retrievedData, NSError *error) {
        if (error == nil) {
            NSLog(@"OK %@", [[NSString alloc] initWithData:retrievedData encoding:NSUTF8StringEncoding]);
        } else {
            NSLog(@"%@", error.localizedDescription);
        }
    }];
}

但收到错误401:操作无法完成。 (com.google.HTTPStatus错误401.)

我试试这个:

  1. 在Apis控制台中为Google Plus授予权限
  2. 使用范围“https://www.googleapis.com/auth/plus.login
  3. 进行授权
  4. 在网上发现只有这个答案:http://gusclass.com/blog/2013/02/27/common-issues-for-the-new-google-platform-release/这篇文章的人建议使用“data-requestvisibleactions”(但如何在目标c中这样做)
  5. 我不知道出了什么问题。

    更新

    https://developers.google.com/+/api/latest/moments/insert#try-it暂时无效。

1 个答案:

答案 0 :(得分:2)

在服务器端遇到同样的问题。在将用户重定向到身份验证页面时,您的oauth请求应包含request_visible_actions参数。查看我的questiondiff以获取php客户端。