Spaces:
Runtime error
Runtime error
Commit
·
d8d8947
1
Parent(s):
f770758
Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import requests
|
2 |
+
from flask import Flask, redirect, request, render_template
|
3 |
+
from urllib.parse import quote
|
4 |
+
|
5 |
+
app = Flask(__name__)
|
6 |
+
|
7 |
+
#Salesforce OAuth2 configuration
|
8 |
+
client_id = '3MVG9kBt168mda_.dKX627bLPDOUFubPD1E.J0chqdznbNF0cKPdh.lsqALpsMHu69E3peaq8WjD2ggyM4vGb';
|
9 |
+
client_secret = '2F9F0DD41AF0061E4A13F3F5AEF4681338BC61BAE55CE8EAB83EFF17A984340D';
|
10 |
+
redirect_uri = 'http://localhost:4000/oauth2/callback';
|
11 |
+
salesforce_login_url = 'https://login.salesforce.com';
|
12 |
+
api_version = 'v56.0'
|
13 |
+
|
14 |
+
@app.route('/')
|
15 |
+
def index():
|
16 |
+
# Generate the authorization URL
|
17 |
+
authorization_url = f'{salesforce_login_url}/services/oauth2/authorize?response_type=code&client_id={client_id}&redirect_uri={quote(redirect_uri)}&scope=api'
|
18 |
+
return render_template('index.html', authorization_url=authorization_url)
|
19 |
+
|
20 |
+
@app.route('/oauth2/callback')
|
21 |
+
def oauth_callback():
|
22 |
+
authorization_code = request.args.get('code')
|
23 |
+
|
24 |
+
# Exchange the authorization code for an access token
|
25 |
+
token_url = f'{salesforce_login_url}/services/oauth2/token'
|
26 |
+
token_data = {
|
27 |
+
'grant_type': 'authorization_code',
|
28 |
+
'code': authorization_code,
|
29 |
+
'client_id': client_id,
|
30 |
+
'client_secret': client_secret,
|
31 |
+
'redirect_uri': redirect_uri
|
32 |
+
}
|
33 |
+
token_response = requests.post(token_url, data=token_data)
|
34 |
+
token_response.raise_for_status()
|
35 |
+
token_json = token_response.json()
|
36 |
+
access_token = token_json['access_token']
|
37 |
+
instance_url = token_json['instance_url']
|
38 |
+
|
39 |
+
# Example: Make a request to Salesforce REST API
|
40 |
+
api_endpoint = f'{instance_url}/services/data/{api_version}/query?q=SELECT+Id,Name+FROM+Account'
|
41 |
+
headers = {
|
42 |
+
'Authorization': f'Bearer {access_token}'
|
43 |
+
}
|
44 |
+
api_response = requests.get(api_endpoint, headers=headers)
|
45 |
+
api_response.raise_for_status()
|
46 |
+
accounts = api_response.json()['records']
|
47 |
+
|
48 |
+
return render_template('result.html', accounts=accounts)
|
49 |
+
|
50 |
+
if __name__ == '__main__':
|
51 |
+
app.run(port=4000)
|
52 |
+
|