gpt4 book ai didi

android - 未经身份验证写入 Google 表格

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:30:37 24 4
gpt4 key购买 nike

在我的一个项目中,我需要将应用程序(iOS 和 Android)中的数据写入 Google 表格文档。我需要将数据写入不属于用户的电子表格,电子表格在我公司帐户下。

根据文档,对于这种情况,我可以使用Create credentials > API key 来设置非身份验证 key 。
我担心的是任何人都可以在应用程序中获取此 key (使用一些基本的逆向工程方法)。我有一个想法,即创建一个具有只写 凭证的用户,并使用他的 API-KEY 来执行 API 请求。但我确信有更好的方法来实现这一目标。

我有哪些选择?非常感谢!

最佳答案

您可以使用 google 应用程序脚本来部署任何人甚至匿名都可以访问的网络应用程序,然后在您的应用程序中创建一个运行该脚本的异步方法。可以在这里看到此类 webapp 的示例:https://gist.github.com/petyr47/7af08ec2d982399c1b4ace2734597d3b.js然后您可以添加如下所示的 AsyncTask 方法:

public class SendRequest extends AsyncTask<String, Void, String> {


protected void onPreExecute(){}

protected String doInBackground(String... arg0) {

try{

//Enter script URL Here
URL url = new URL("Your App Script Web App URL");

JSONObject postDataParams = new JSONObject();

//Passing scanned code as parameter

postDataParams.put("sdata",scannedData);


Log.e("params",postDataParams.toString());

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.setDoOutput(true);

OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(getPostDataString(postDataParams));

writer.flush();
writer.close();
os.close();

int responseCode=conn.getResponseCode();

if (responseCode == HttpsURLConnection.HTTP_OK) {

BufferedReader in=new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer sb = new StringBuffer("");
String line="";

while((line = in.readLine()) != null) {

sb.append(line);
break;
}

in.close();
return sb.toString();

}
else {
return new String("false : "+responseCode);
}
}
catch(Exception e){
return new String("Exception: " + e.getMessage());
}
}

@Override
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(), result,
Toast.LENGTH_LONG).show();

}
}

public String getPostDataString(JSONObject params) throws Exception {

StringBuilder result = new StringBuilder();
boolean first = true;

Iterator<String> itr = params.keys();

while(itr.hasNext()){

String key= itr.next();
Object value = params.get(key);

if (first)
first = false;
else
result.append("&");

result.append(URLEncoder.encode(key, "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(value.toString(), "UTF-8"));

}
return result.toString();
}

您可以使用以下方法执行此方法:

 new SendRequest().execute();

将方法中的参数替换为您要发送的内容。希望这有帮助

虽然这是针对 android 的解决方案,但我无法帮助 iOS,但您可以应用相同的原则。

关于android - 未经身份验证写入 Google 表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47738241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com